У меня есть ADP Microsoft Access 2003, который использует связанную «основную» форму с несколькими связанными формами непрерывного стиля. Все они используют отключенные Recordsets через вспомогательный класс.MS Access ADP Disconnected Recordset Reverts
Некоторые пользователи заметили одно и то же странное поведение: они добавляют/редактируют запись в непрерывной подчиненной форме, оставляют запись (совершают редактирование в наборе записей), блокируют компьютер (Ctrl + Alt + Del), они разблокируйте компьютер, они вернутся к форме, примерно через 5 секунд он мерцает и возвращается в исходное состояние без указания.
Я смог воспроизвести это, следуя приведенным выше шагам, далее, после внесения изменений в мою форму, связанных с отключенным набором записей, я перешел на SQL Server и изменил значение. После процедуры блокировки/разблокировки компьютера форма мерцает и обновляется, и появляется новое значение, которое я только что ввел в SQL Server.
Кажется, что примерно через 5 секунд мой отключенный Recordset повторно подключается (по своему усмотрению) и запрашивает набор записей.
Я понимаю, что здесь я не даю много информации, но кто-нибудь столкнулся с проблемой, связанной с отключенными Recordsets, которые повторно подключались и требовали? Или, по крайней мере, есть идеи о том, где я могу начать отладку?
У меня есть сценарий ADP и SQL для создания базы данных, если кто-то хотел бы воссоздать это в своей среде.
Вот как я создаю отключенный Recordset:
Dim cnn As ADODB.Connection
Dim stmTest As ADODB.Stream
Set cnn = New ADODB.Connection
cnn.Open Application.CurrentProject.AccessConnection.ConnectionString
' Create recordset and disconnect it.
Set mrsTest = New ADODB.Recordset
mrsTest.CursorLocation = adUseClient
mrsTest.Open "SELECT * FROM [tblChild] WHERE ParentID = 1" _
, cnn _
, adOpenStatic, adLockBatchOptimistic
Set mrsTest.ActiveConnection = Nothing
cnn.Close
Set cnn = Nothing
' Copy recordset to stream in memory.
Set stmTest = New ADODB.Stream
stmTest.Open
mrsTest.Save stmTest, adPersistADTG
' Bind form to disconnected recordset.
Set Me.Recordset = mrsTest
' Open a copy of the recordset from the stream.
Set mrsTest = New ADODB.Recordset
stmTest.Position = 0
mrsTest.Open stmTest
Спасибо за идею. – SLeepdepD