我开始收到错误3048-无法打开更多数据库。
我似乎通过实现单个静态数据库变量来驯服它
在David Fenton's example here之后的“dbLocal()”函数中。
我仍然想监视数据库引用的数量,以了解我在Access中接近2048个限制的程度。我尝试使用.Recordsets.Count,但它始终返回零。如何确定Access内部使用的引用/记录集计数?
我尝试查看的一个地方是“dbLocal()”函数。在这里简化到小于光秃的最小值(在我的代码中,我使用Fenton的完整示例),我正在尝试这样做:
Public Function dbLocal() As DAO.Database
Static dbCurrent As DAO.Database
If dbCurrent Is Nothing Then
Set dbCurrent = CurrentDb()
End If
Set CurDb = dbCurrent
Debug.Print dbCurrent.Recordsets.Count
End Function
但它始终打印零。即使它工作了,但这也不是我真正想要的,因为(如果我理解正确的话)Access会维护自己的会计,包括由于查询,组合框等引起的引用,而我的静态变量只会“知道”由于使用此dbLocal()函数显式指定了VBA语句而导致引用。
有没有办法窥视Access的内部记帐,以了解我将要用尽2048个最大值的可能性有多大?
如果有问题的话:Windows XP Pro SP3;访问2010 32位版本14.0.6024.1000 SP1 MSO 14.0.6112.5000。
最佳答案
一种方法是一直打开记录集,直到出现错误为止:
Function TablesAvailable() As Integer
Dim i As Integer, rs As DAO.Recordset, rsColl As Collection
On Error GoTo Err_TablesAvailable
Set rsColl = New Collection
Do While i < 4096
i = i + 1
Set rs = CurrentDb.OpenRecordset("SELECT 1")
rsColl.Add rs
Loop
Exit_TablesAvailable:
For Each rs In rsColl
rs.Close
Set rs = Nothing
Next rs
Exit Function
Err_TablesAvailable:
Select Case Err.Number
Case 3048 'Cannot open any more databases.
TablesAvailable = i
Case Else
MsgBox Err.Number & ": " & Err.Description
End Select
Resume Exit_TablesAvailable
End Function
关于ms-access - 如何获取数据库记录集/引用的计数(以调试ERR#3048-无法打开更多数据库)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8297764/