В программе вначале очищаю таблицу в БД :
Dim dbRab As New ADODB.Connection , rst As New ADODB.Recordset, qq$,Cnn$
Cnn = "Provider=Microsoft.Jet.OLEDB.3.51;Persist Security Info=False;" & "Data Source=D:\POPRAB.MDB;"
dbRab.ConnectionString = Cnn
dbRab.CursorLocation = adUseClient ' или adUseServer - пробовал
dbRab.Open
qq = "Delete * From tRabXYZ"
dbRab.Execute (qq)
Все прекрасно очищается (просмотр в Access).Затем создаю Recordset (rst):
qq = "Select * From tRabXYZ"
rst.Open qq, dbRab.ConnectionString, adOpenKeyset, adLockOptimistic, adCmdText
rst.Requery
qq="str"
И далее непонятно. Если между очисткой таблицы и созданием (rst) устанавливаю отладочный (Toggle BreakPoint) -
(например на строке (rst.Open ...)), все прекрасно - на строке (qq="str") Recordset показывает число записей = 0 и rst.absolutePosition = -1, rst.Eof = True
Но как только убираю (Toggle BreakPoint) - Recorset (rst) показывает число записей в таблице
до ее очистки и rst.absolutePosition = 1. , хотя при просмотре в Access таблица чиста !.
Уж пробовал и (rst.requery) после Open и искусственное добавление и удаление записи в (rst) -
результатат - тот же.
после Ваших предложений пробовал :
rst.close и rst.update
и снова открываю Recordset даже с другим именем - rstF.Open ...
Никакого толка. Показывает rst.eof=False , rstBof=False, rst.RecordCount=n, где n-число удаленных записей.
Я просто пытаюсь заменить в старой программе (DAO c DATA) на ADODB и ADODC, чтобы работать с новыми версиями
.mdb Access.
В моей старой программе используется DAO c многочисленными вставками типа (.Execute SQL) и потом созданием новых Recordset и никаких проблем.
Похоже, дело в том, что полностью очищается таблица и возникает какая-то неопределенность, потому что при удалении не всех записей - операторы отрабатывают идеально !
Попробуйте выполнить фрагмент данной программы на своем компьютере. Что получится ? (не забудьте убрать
Toggle BreakPoint, потому что с ним все идет идеально.
Что-то не учитываю. Помогите пожалуйста.