MS Access ADP断开连接的记录集还原

时间:2010-02-08 03:00:06

标签: ms-access ms-access-2003 adp

我有一个Microsoft Access 2003 ADP,它使用绑定的“主”表单和几个绑定的连续样式子表单。它们都通过辅助类使用断开连接的Recordset。

有几个用户注意到了同样的奇怪行为:他们在连续子窗体中添加/编辑记录,他们离开记录(将编辑提交到Recordset),他们锁定计算机(Ctrl + Alt + Del),他们解锁电脑,他们回到表格,大约5秒钟后,它闪烁并恢复到原来未经编辑的状态。

我已经能够按照上面的步骤重现这一点,而且,在我的表单中进行更改后,绑定到一个断开连接的Recordset,我去了SQL Server并更改了一个值。锁定/解锁计算机例程后,表单闪烁并刷新,我刚刚在SQL Server中输入的NEW值出现。

好像在大约5秒后,我的断开连接的Recordset重新连接(自己)并重新查询Recordset。

我意识到我在这里没有提供大量信息,但有没有人遇到过连接记录集重新连接和重新查询的问题?或者至少知道我可以在哪里开始调试?

如果有人想在他们的环境中重新创建数据库,我有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

3 个答案:

答案 0 :(得分:1)

  

我想要处理(保存和取消按钮)之类的事务   在我的多用户系统中,表被锁定。为了连续   在访问工作中,它们必须绑定到Recordset。

您可以使用绑定到临时表的表单/子表单来实现此效果。

http://www.access-programmers.co.uk/forums/showthread.php?t=206862

史蒂夫

答案 1 :(得分:0)

可能有点偏离主题,但这是有趣的代码。我从未考虑过使用这样的数据集。是否有一个特殊原因可以使用这些“断开连接的数据集”?

答案 2 :(得分:0)

我过去曾经尝试过相同的代码并且拥有相同的经验。

以下是我为什么记录集重新连接到服务器的方式......

如果检查表单的recordsource(绑定记录集后),您将看到您的SQL语句作为值放置。由于它是ADP,因此您的表单始终绑定到服务器。因此,当表单刷新时,记录集也会刷新。

如果您找到解决方案,请发布!

谢谢。