Только разобрался с AdoDb, а теперь аналогичная напасть с AdoDc.
При выполнении .Execute с Sql опять не отрабатывает Recordset, если не включить Break Point :
' На форме Adodc, TGrid, command1
Private Sub Form_Load()
Dim Cn as New AdoDb.Connection, qq$, cnn$
cnn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source = e:\top.mdb"
Set cn = New ADODB.Connection
cn.CursorLocation = adUseServer ' = adUseClient
cn.ConnectionString = cnn
cn.Open
With Me.Adodc
.ConnectionString = cn ' или cnn
.RecordSource = "Select * From Obi"
.CursorLocation = adUseServer
.CursorType = adOpenKeyset
.LockType = adLockOptimistic
.Refresh
End With
Set Me.TGrid.DataSource = Ado ' или с .Recordset
TGrid.Refresh
' Сетка TGrid - любая для таблицы из 2-х колонок:
' nom As Long, s_fact as Long
End Sub
Private Sub Command1_Click()
Dim qq$, nom As Long, f, j, d, e
nom = TGrid.Columns("nom").Value
qq = "Update Obi Set s_fact=62345 Where nom=" & nom
cn.Execute qq ' , False
Me.Ado.Recordset.Requery
Me.Ado.Recordset.AbsolutePosition = nom
f = TGrid.Columns("s_fact")
e = Me.Adodc.Recordset!s_fact
Msgbox f & "," & e
End Sub
' Если не поставить Break Point в строке Me.Ado.Recordset.Requery,
результат в (f) и (e) не меняется. А если поставить Break Point в
указанной строке - все изменяется правильно с изменениями в сетке.
' Не помогают : MoveLast, Update, Refresh как Adodc , так и сетки и др.
' Если же создать rst.Open (rst as AdoDb.Recordset), а затем
' Set TGrid=rst, ... rst.Requery - нет проблем
Ну что теперь скажете ?