DataGrid + MySQL

Работа VB и СУБД (Access, MSSQL, MySQL, Oracle и пр.)
Правила форума
При создании новой темы не забывайте указывать используемую СУБД.
Q2W
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 745
Зарегистрирован: 31.01.2004 (Сб) 20:46
Откуда: Питер

DataGrid + MySQL

Сообщение Q2W » 07.07.2005 (Чт) 15:15

Как мне подружить DataGrid с mySQL'ем?
Т.е. чтоб в датагриде был результат запроса, который я в нём указал.
Я знаю верный путь

Ennor
Конструктивный критик
Конструктивный критик
 
Сообщения: 2504
Зарегистрирован: 18.12.2001 (Вт) 3:58
Откуда: Калуга -> Москва

Сообщение Ennor » 07.07.2005 (Чт) 15:21

Вообще-то, сервер тут не при чем - это делается одинаково, независимо от того, подключаешься ты к MSSQL, Access или Postgres. Покажи-ка код, которым ты получаешь данные с сервера и привязываешь грид к рекордсету.

Q2W
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 745
Зарегистрирован: 31.01.2004 (Сб) 20:46
Откуда: Питер

Сообщение Q2W » 07.07.2005 (Чт) 16:04

Код: Выделить всё
Private Sub Form_Load()
Dim adoConnect As adodb.Connection
Set adoConnect = New adodb.Connection
Dim record As adodb.Recordset
Dim strConnect As String
strConnect = "DRIVER={MySQL ODBC 3.51 Driver};Server=server;Port=3306;Option=3;Stmt=;Database=global;Uid=user;Pwd=mypass;"
adoConnect.Open strConnect
Set record = New adodb.Recordset
record.ActiveConnection = adoConnect
record.Properties("IRowsetIdentity") = True
record.Open "select * from ware1", , adOpenStatic, adLockBatchOptimistic
Set DataGrid1.DataSource = record
End Sub


и вот на record он говорит что 7004: The rowset is not bookmarkable
Я знаю верный путь

Ennor
Конструктивный критик
Конструктивный критик
 
Сообщения: 2504
Зарегистрирован: 18.12.2001 (Вт) 3:58
Откуда: Калуга -> Москва

Сообщение Ennor » 07.07.2005 (Чт) 17:10

Я пока у себя попробую, благо мускул у меня есть, а ты пока напиши, какая у тебя версия сервера.

Q2W
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 745
Зарегистрирован: 31.01.2004 (Сб) 20:46
Откуда: Питер

Сообщение Q2W » 07.07.2005 (Чт) 17:15

4.последний.
Я знаю верный путь

Ennor
Конструктивный критик
Конструктивный критик
 
Сообщения: 2504
Зарегистрирован: 18.12.2001 (Вт) 3:58
Откуда: Калуга -> Москва

Сообщение Ennor » 07.07.2005 (Чт) 17:31

Бред какой-то. Если использовать MSHFlexGrid, то все привязывается на ура. Если же юзать датагрид, то либо валится ошибка (в твоем коде), либо вообще ничего не происходит (я немного переписал его, по привычке). Получается, что все зависит от грида. Идиотизм...

Ennor
Конструктивный критик
Конструктивный критик
 
Сообщения: 2504
Зарегистрирован: 18.12.2001 (Вт) 3:58
Откуда: Калуга -> Москва

Сообщение Ennor » 07.07.2005 (Чт) 17:49

Офигеть... Оторванный рекордсет в действии:
Код: Выделить всё
Private Conn As ADODB.Connection, Rec As ADODB.Recordset

Private Sub Command1_Click()
Dim strConnect As String
strConnect = "DRIVER={MySQL ODBC 3.51 Driver};Server=lab;Database=base1;Uid=root;Pwd=;"
Set Conn = New ADODB.Connection
' Init params
With Conn
  .CommandTimeout = 15
  .ConnectionString = strConnect
  .ConnectionTimeout = 10
  .CursorLocation = adUseClient
  .IsolationLevel = adXactReadCommitted
  .Mode = adModeReadWrite Or adModeShareDenyNone
  .Open
End With
' Init recordset
Set Rec = New ADODB.Recordset
With Rec
  Set .ActiveConnection = Conn
  .CursorLocation = adUseClient
  .CursorType = adOpenStatic
  .LockType = adLockBatchOptimistic
  .Source = "select * from table1"
  .Open
End With
Rec.Properties("IRowsetIdentity") = True
Set Me.DataGrid1.DataSource = Rec
End Sub

Private Sub Command2_Click()
' Clear garbage
Rec.Close
Set Rec = Nothing
Conn.Close
Set Conn = Nothing
End Sub

Если перенести объявление соединения и рекордсета в обработчик события, то туда же перенесется и их неявная деструкция, как локально объявленных переменных по выходу из области видимости. В этом случае по отработке события, если в его конце не писать явно закрытие рекордсета, грид сохранит в себе данные! А вот если написать хотя бы
Код: Выделить всё
Rec.Close
, то все свободны - грид чистится автоматом. В моем же примере данные сохраняются, пока не нажмешь вторую кнопку.

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

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

Сообщение Konst_One » 07.07.2005 (Чт) 18:19

Получается, что все зависит от грида


от него конечно зависит, но скорее всего это вызвано курсором. если поставить клиентский , то все будет нормально.

а зачем ты поставил вот это свойство IRowsetIdentity ?

Q2W
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 745
Зарегистрирован: 31.01.2004 (Сб) 20:46
Откуда: Питер

Сообщение Q2W » 08.07.2005 (Пт) 10:01

в одном из примеров нашёл. разницы с и без не заметил. всё равно не работало +) Ennor, tnx, буду посмотреть счаз.
Я знаю верный путь


Вернуться в Базы данных

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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0

    TopList  
cron