gpt4 book ai didi

VBA 调试——查看所有打开的 DAO 记录集

转载 作者:行者123 更新时间:2023-12-04 21:00:50 30 4
gpt4 key购买 nike

我正在处理 Access 2010 数据库,其中使用 DAO 记录集来创建新记录。然而,代码无法识别新创建的记录——它找到了另一条记录。

开发人员很草率:他没有关闭记录集。代码循环了几次,我相当确定记录集的多个实例是问题的原因。

Set rsMain = CurrentDb().OpenRecordset(strSQL, dbOpenDynaset)
' ... create new record ....
'rsMain.Close '' not included, unfortunately
'Set rsMain = Nothing '' not included, unfortunately

我想停止 代码并查看打开的 DAO 记录集列表。如何使用立即窗口查询所有打开的记录集?必须有一个集合可供查看。

已解决

我接受了一个有用的答案,因为它很好地解决了我的帖子。虽然我受益匪浅,但我需要的答案却在不同的方向——VBA 对象引用。在 Gord 的回答下查看我的评论。

最佳答案

这取决于您打开记录集的方式。

“Recordsets 集合包含连接或数据库对象中所有打开的 Recordset 对象。”

您应该将 CurrentDB() 保存到变量中,以免丢失信息,因为每次调用它都会创建新的数据库引用。

或者声明类似这个函数的东西,它应该替换你所有的 CurrentDB() 调用^

Public Function CurrDB() As Database
Static mCurrDb As Database
If mCurrDb Is Nothing Then
Set mCurrDb = CurrentDb
Debug.Print Now, "static mCurrDB inited for ", hWndAccessApp
End If
Set CurrDB = mCurrDb
End Function

在 Q 的代码中:

Set rsMain = CurrDB().OpenRecordset(strSQL, dbOpenDynaset)
' ... create new record ....
'rsMain.Close '' not included, unfortunately
'Set rsMain = Nothing '' not included, unfortunately

调试输出写函数为:

Public Sub  OpenedRST()
dim rst as DAO.Recordset

For each rst in CurrDB().Recordsets
debug.print rst.name
next rst
end sub

关于VBA 调试——查看所有打开的 DAO 记录集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19818240/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com