RecordSet & DataGrid

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
JohnCR
Обычный пользователь
Обычный пользователь
 
Сообщения: 75
Зарегистрирован: 14.06.2005 (Вт) 19:03

RecordSet & DataGrid

Сообщение JohnCR » 14.06.2005 (Вт) 19:07

Код: Выделить всё
Dim cn As ADODB.Connection
Dim rs As ADODB.Recordset
    Set cn = New ADODB.Connection
    Set rs = New ADODB.Recordset
    With cn
        .Provider = "Microsoft.Jet.OLEDB.4.0"
        .ConnectionString = App.Path & "\base\base.mdb"
        .Open
    End With
   
    With rs
        .ActiveConnection = cn
        .LockType = adLockReadOnly
        .CursorType = adOpenDynamic
        .Source = "SELECT * FROM MyTable"
        .Open
    End With
    DataGrid1.HoldFields
    Set DataGrid1.DataSource = rs'здесь возникает ошибка: The RowSet is Not BookmarkAble


Возникает ошибка: The RowSet is Not BookmarkAble.
Подскажите, что неправильно?

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 14.06.2005 (Вт) 19:36

Код: Выделить всё
    rs.CursorLocation = adUseClient
    rs.LockType = adLockOptimistic

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 14.06.2005 (Вт) 19:37

Код: Выделить всё
rs.CursorType = adOpenKeyset

LOckType можешь ставить любой

JohnCR
Обычный пользователь
Обычный пользователь
 
Сообщения: 75
Зарегистрирован: 14.06.2005 (Вт) 19:03

Сообщение JohnCR » 14.06.2005 (Вт) 20:21

Ошибка больше не возникает, но не выполняется запрос:
Код: Выделить всё
.Source = "SELECT * FROM MyTable"

и таблица (DataGrid1) остается пустой :cry:

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 15.06.2005 (Ср) 12:26

что значит не выполняется запрос? у рекордсета нет записей? какая ошибка на методе rs.Open возникает?

JohnCR
Обычный пользователь
Обычный пользователь
 
Сообщения: 75
Зарегистрирован: 14.06.2005 (Вт) 19:03

Сообщение JohnCR » 15.06.2005 (Ср) 12:32

Ошибок никаких не возникает.
Просто в рекордсет не попадает ни одной записи.

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 15.06.2005 (Ср) 13:38

что дает rs.RecordCount ?

Так пробовал:

Код: Выделить всё
Set rs.ActiveConnection=cn
rs.CursorLocation=adUseClient
rs.Open "SELECT * FROM MyTable", , adOpenKeyset, adLockOptimistic, adCmdText

JohnCR
Обычный пользователь
Обычный пользователь
 
Сообщения: 75
Зарегистрирован: 14.06.2005 (Вт) 19:03

Сообщение JohnCR » 15.06.2005 (Ср) 13:44

Konst_One, спасибо за участие, однако, ничего не получилось.
Вставил компонент MSADODC.ocx.
Все заработало.

Wolfsider
Начинающий
Начинающий
 
Сообщения: 21
Зарегистрирован: 19.08.2006 (Сб) 13:37

Сообщение Wolfsider » 29.10.2006 (Вс) 13:20

Вот у меня точно такая - же фигня... а когда я присваиваю рекордсет DataSource'у не напрямую, а через Recordset.Clone - все пашет, но курсоры получаются несвязаные... кто-нибудь решил этот косяк? Неохото прицеплять MSADODC . Он дурной...

/UPDATE !

!Ура! Проканало! Вот код:

Код: Выделить всё

CON_STR = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=(путь к БД)

    Ado_Connection= New ADODB.Connection
    Ado_Connection.ConnectionString = CON_STR
    Ado_Connection.Mode = adModeShareDenyNone
    Ado_Connection.CursorLocation = adUseClient
    Ado_Connection.Open
   
Set Ado_Recordset = New ADODB.Recordset
Set Ado_Recordset.ActiveConnection = Ado_Connection
Ado_Recordset.CursorLocation = adUseClient
Ado_Recordset.Open "SELECT * FROM main", , adOpenStatic, adLockOptimistic, adCmdText

Set dtgrid.DataSource = Ado_Recordset

dtgrid.Refresh


Собственно, вытянуто и дополнено с верхнего поста :wink:


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Google-бот и гости: 114

    TopList