Конференція VBStreets - Перегляд теми - FlexGrid та взагалі гриди в Access

До речі, Janus GridEx 2000 (http://www.janusys.com) - найбільш схожий на Access-овський з Grid-ів, якщо придивитися. Вони, схоже, на Access поглядали, коли його робили. Відповідно досить непогано "лягає" і в сам Access (як Access зі сторонніми контролами працює мені взагалі вкрай не подобається).

Хоча, IMHO, якщо щось робити на Access, краще користуватися лише його рідні компоненти.

P.S А користувати Grid-и, що йдуть в комплекті з VB - це мазохізм, взагалі-то.

Пиши щось такого типу:

Код: Виділити все Dim s as String s= "123" & vbTab & "456" MSFlexGrid1.AddItem s

vbTab символ перескакує в наступний стовпець, таким чином, якщо тобі треба записати рядок з таблиці БД, то береш той же Recordset і його поля через vbTab склеюєш у рядок і Additem, повільно правда все це.

Код: Виділити все Set rs = New ADODB.Recordset rs.CursorLocation = adUseClient rs.Open "SELECT ClientID, Title, Login from Clients", ConnString, adOpenStatic, adLockReadOnly, adCmdText

s = rs.GetString(adClipString, -1, vbTab, vbCr, "")

З Me.MSFlexGrid1 .Redraw = False .Clear .Rows = rs.RecordCount + 1 .Cols = rs.Fields.Count + 1 .FixedCols = 1 .FixedRows = 1

.ColW > .TextMatrix(0, 1) = "ClientID" .TextMatrix(0, 2) = "Title" .TextMatrix(0, 3) = "Login"

.ColSel = Me.MSFlexGrid1.Cols - 1 .RowSel = Me.MSFlexGrid1.Rows - 1

.ColSel = 0 .RowSel = 0 .Col = 1 .Row = 1 .AllowUserResizing = flexResizeColumns .Redraw = True End With

Konst_One Код: Виділити все Set rs = New ADODB.Recordset rs.CursorLocation = adUseClient rs.Open "SELECT ClientID, Title, Login from Clients", ConnString, adOpenStatic, adLockReadOnly,adCmdText

Поясни, чим відрізняється клієнтський курсор, у твоєму випадку від серверного. Клієнтський займає більше ресурсів? Код: Виділити все Dim rs As ADODB.Recordset Dim cn As ADODB.Connection Dim sql As String sql = "select TELEPHONE,NAME,REGION,STREET,BUILDING,BLOCK,FLAT, ElID від ElPhones Order by TELEPHONE" Set cn = New ADODB.Connection cn.Open = "PROV Set rs = cn.Execute(sgl) Do Until rs.EOF ' Заповнюємо сітку '. rs.NextRecordset Wend rs.Close Set rs = Nothing Set cn = Nothing http://bbs.vbstreets.ru/viewtopic.php?t=14532 У чому важлива різниця?

клієнтський курсор фізично відкривається клієнтському комп'ютері , тобто . всі дані фетчать відразу на клієнта

серверний же курсор відкритий на сервері і ним управляє сам сервер баз даних, підвантаження на клієнта здійснюється за потребою, відповідно навантаження на мережу передачі зменшується

щоб заповнити DBGRID своїми довільними даними потрібно спочатку створити відв'язаний рекордсет і заповнити його цими даними, а потім присвоїти його гриду як джерело даних.

Код: Виділити все Dim rs as ADODB.Recordset

Set rs=New ADODB.Recordset rs.Fields.Append "ID", adInteger rs.Fields.Append "Desc", adVarchar,100

rs.Open rs.AddNew rs! >rs!Desc="Test 1" rs.Update

Konst_One Якщо я правильно розумію, незалежно від того, хочемо ми передати 1 рядок з БД сервера зі 100 000, все одно, у разі клієнтського курсору, передадуть усі 100 000 Клієнту. Інша справа, як ми все це господарство відобразимо - частково або цілком. ==> трафік та машина вантажиться за повною схемою. Це так?

Andrey Fedorov Підскажи, як називається бібліотека акцесівського гриду, хочу поюзати її в VB6. Іще, де знайти нормальну бібліотеку (не демку) гриду "Janus GridEx 2000" або ліки. Виклади в топік пліз.

Я знайшов VSFlexGrid компанії Video Soft. Тепер із стандартними VB гридами працювати не тягне. Взяти можна тут: http://bbs.vbstreets.ru/viewtopic.php?p=106816#106816

Ні – викладати куплений компонент я не можу. Можеш пошукати його на CD, які продаються. Ну, знаєш де. Називається Janus GridEx 2000.

Це можна, але в таких випадках складніше обробляти та виводити повідомлення про помилки введення, особливо коли вони в кількох рядках. Але часто доводиться так робити - щоб було зручніше користувачеві.

[quote="alibekЦе проблема користувача. Якщо так хочеться заповнювати, як у Excel, нехай і заповнює в Excel, а ти переноси дані в БД.[/quote]

Тоді проблема користувача переросте в проблему програміста.

І головне - у нього користувач не хоче заповнювати в Excel, він хоче заповнювати як в Excel. Тобто, наприклад, заповнюючи спочатку перший стовпець вертикально, а потім інші - бувають форми десь так зручно (або просто звично). Дані в таблицю бази так не введеш – адже в ній частину полів оголошено обов'язковими, а заповнено лише одне. Ось і доводиться заповнювати таблицю на клієнті, при натисканні кнопки Зберегти робити всі можливі перевірки правильності введення та лише потім зберігати всі записи.

Той-таки Grid. Робив подібні, навіть коли при введенні значення в одне поле проводиться перерахунок значень в інших полях, у тому числі і в інших записах - на Grid-e все це нормально реалізується.