Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > VB6 > Как работать с DBGrid


Автор: Leoo 10.11.2005, 11:12
Не могу ни как понять как работает DBGrid1.Row = i
На форму я поместил DBGrid на котором отображается например 9 записей.
При выборке у меня получается 18 записей.
И как только DBGrid1.Row = 10 происходит ошибка.
Как перейти на 10 запись. Типа там нодо провернуть скрол. А у меня не получается.

Код

 i = 0
        For i = 0 To DBGrid1.ApproxCount - 1
            DBGrid1.Row = i
            If CCur(DBGrid1.Columns(2).Text) < CCur(DBGrid1.Columns(3).Text) Then
                MsgBox CStr(i)
            End If
        Next

Автор: Voldemar2004 10.11.2005, 12:27
Цитата(Leoo @ 10.11.2005, 11:12)
Как перейти на 10 запись.
Код
Option Explicit

Private Sub Command1_Click()

Dim i As Long

For i = 0 To 9
Data1.Recordset.MoveNext
Next i

        Data1.Recordset.Edit
        Data1.Recordset.Fields(0) = 0
        Data1.Recordset.Update

End Sub

Автор: Leoo 10.11.2005, 14:00
Спасибо с этой проблемой справился, только появилась еще одна.

У меня в DBGrid есть пять полей. Четыре из них берутся из БД, а в последнее значения я должен заносить сам.
Я пытаюсь записать след. образом:
Код

For i = 0 To DBGrid1.ApproxCount - 1
            Data1.Recordset.MoveNext
            DBGrid1.Columns(4).Text = i
Next i

но в гриде ни чего не появляется.

Автор: Voldemar2004 11.11.2005, 09:32
Цитата(Leoo @ 10.11.2005, 14:00)
а в последнее значения я должен заносить сам.
Вручную? Или так:
Код
Option Explicit

Private Sub Command1_Click()
Dim i As Long

For i = 0 To StrCount(Data1, TDBGrid1) - 1
        Data1.Recordset.Edit
            
        ' скопировать в 5-ый столбец Grid'а выбранные значения из 1-го столбца:
        Data1.Recordset.Fields(4) = Val(TDBGrid1.SelText) ' можно и без Val()
            
        Data1.Recordset.Update
        Data1.Recordset.MoveNext
   
Next i

End Sub

Private Function StrCount(DataControl As Data, Grid As TDBGrid) As Long
    DataControl.Recordset.MoveLast
    StrCount = DataControl.Recordset.RecordCount
    DataControl.Recordset.MoveFirst
End Function

Аругмент Grid функции StrCount в твоем случае должен быть типа DataGrid:
Код
Private Function StrCount(DataControl As Data, Grid As DataGrid) As Long
Я просто не пользуюсь MS DataGrid Control.

Автор: Leoo 11.11.2005, 10:01
Я попробовал, и все равно то же самое. Грида ни чего не отображает.

Правда вместо TDBGrid я использовал DBGrid

Автор: Voldemar2004 11.11.2005, 10:23
Цитата(Leoo @ 11.11.2005, 10:01)
Правда вместо TDBGrid я использовал DBGrid
Я кажись объяснил: вместо TDBGrid1 везде напиши datagrid1 (или что там у тебя)
Код

Option Explicit    
Private Sub Command1_Click()    
Dim i As Long    
For i = 0 To StrCount(Data1, datagrid1) - 1    
        Data1.Recordset.Edit    
             
        ' скопировать в 5-ый столбец Grid'а выбранные значения из 1-го столбца:    
        Data1.Recordset.Fields(4) = Val(TDBGrid1.SelText) ' можно и без Val()    
             
        Data1.Recordset.Update    
        Data1.Recordset.MoveNext    
    
Next i    
End Sub    
Private Function StrCount(DataControl As Data, Grid As datagrid1) As Long    
    DataControl.Recordset.MoveLast    
    StrCount = DataControl.Recordset.RecordCount    
    DataControl.Recordset.MoveFirst    
End Function

Автор: Leoo 11.11.2005, 10:29
так я все и исправил на DBGrid и ни чего.

А если создать в БД таблицу с пятью палями при выполнении запроса помещать туда результат, а последний столбец редактировать.

Только как создавать таблицу при загрузки программы, а при закрытии удалять ету таблицу я не знаю.


Автор: Voldemar2004 11.11.2005, 13:22
Цитата(Leoo @ 11.11.2005, 10:29)
при закрытии удалять ету таблицу я не знаю

Код
dim j as long
    For j = 0 To Data1.Recordset.RecordCount - 1
        Data1.Recordset.Delete
    Next j

Автор: Staruha 11.11.2005, 15:04
Цитата
Правда вместо TDBGrid я использовал DBGrid

Вот хотелось бы знать там три вида Grid ,что для чего. С элементом Grid поработала понравилась.Только вот как много строк можно туда добавлять?

Автор: Voldemar2004 11.11.2005, 22:24
Цитата(Staruha @ 11.11.2005, 15:04)
Вот хотелось бы знать там три вида Grid ,что для чего. С элементом Grid поработала понравилась.Только вот как много строк можно туда добавлять?
Из всех я выбрал Apex True DataGrid Control - не надо связываться с ADO, хватит и DAO DataControl + мощь бОльших возможностей в отличие от MS DataGrid. А насчет строк не интересовался, но у меня на работе БД ~ 37500 строк (sic!) столбцов ок. 200. Все работает просто замечательно. Только при создании дистрибутива придется попотеть.
Добавлено @ 22:29
Читаем здесь: smile http://msdn.microsoft.com/library/rus/default.asp?url=/library/rus/vbcon/html/vbwlkWalkthroughUsingDataGridWebControlToReadWriteData.asp

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)