Отключение MS Access ADP отключил набор записей - PullRequest
3 голосов
/ 08 февраля 2010

У меня есть Microsoft Access 2003 ADP, в котором используется связанная «основная» форма с несколькими связанными подчиненными формами непрерывного стиля. Все они используют отключенные наборы записей через вспомогательный класс.

Некоторые пользователи заметили такое же странное поведение: они добавляют / редактируют запись в непрерывной подчиненной форме, оставляют запись (фиксируя редактирование в Recordset), блокируют компьютер (Ctrl + Alt + Del), разблокируют компьютер, они возвращаются к форме, примерно через 5 секунд он мигает и возвращается в исходное неотредактированное состояние.

Я смог воспроизвести это, выполнив шаги, описанные выше, далее, после внесения изменений в мою форму, связанных с отключенным набором записей, я перешел на SQL Server и изменил значение. После процедуры блокировки / разблокировки компьютера форма мигает и обновляется, и появляется НОВОЕ значение, которое я только что ввел в SQL Server.

Как будто примерно через 5 секунд мой отключенный Recordset повторно подключается (самостоятельно) и запрашивает Recordset.

Я понимаю, что здесь я не даю много информации, но кто-нибудь сталкивался с проблемой повторного подключения и запроса отключенных наборов записей? Или, по крайней мере, есть идеи, где я мог бы начать отладку?

У меня есть сценарий ADP и SQL для создания базы данных, если кто-то хотел бы воссоздать это в своей среде.

Вот как я создаю отключенный набор записей:

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

Ответы [ 3 ]

1 голос
/ 25 сентября 2011

Я хотел обработать транзакцию (кнопки Сохранить и Отменить) без таблицы заблокированы в моей многопользовательской системе. Для непрерывного формы в Access to work, они должны быть привязаны к Recordset.

Вы можете использовать формы / подчиненные формы, привязанные к временным таблицам, для достижения именно этого эффекта.

http://www.access -programmers.co.uk / форум / showthread.php? Т = 206862

Steve

0 голосов
/ 08 апреля 2010

Я тоже экспериментировал с тем же кодом некоторое время назад и имел тот же опыт.

Вот как я вижу, почему набор записей подключается к серверу ...

Если вы проверите источник записей вашей формы (после привязки набора записей), вы увидите, что ваш оператор SQL помещен туда как значение. Поскольку это ADP, ваша форма всегда связана с сервером. Следовательно, когда обновляется форма, обновляется и набор записей.

Если вы найдете решение этой проблемы, пожалуйста, напишите!

Спасибо.

0 голосов
/ 08 февраля 2010

Возможно, немного оффтоп, но это интересный код. Я никогда не думал о работе с такими наборами данных. Есть ли конкретная причина, по которой вы используете эти «отключенные наборы данных»?

...