|
|
|
| в обработке событий часто используются создание рекордсетов set rst = db.openrecordset("...
с какогото момента начало появлятся сообщение что кол-во открытых баз превышает максимально возможное для аксеса (версия 2003)
1. как определить количеств открытых баз?
2. как уменьшить кол-во открытых баз? | |
|
| |
|
|
|
|
| Определить кол-во открытых ДБ в активном воркпрейсе можно так
Debug.Print Workspaces(0).Databases.Count
Написал такой код
Public Sub OpenDAODB()
Dim colDB As New Collection
Dim colRST As New Collection
Dim db As DAO.Database
Dim rst As DAO.Recordset
Dim i As Integer
Const MAX_I = 500
On Error GoTo OpenDAODB_Error
For i = 1 To MAX_I
Set db = CurrentDb
colDB.Add db, CStr(i)
Set rst = db.OpenRecordset("select * from tbltest")
colRST.Add rst, CStr(i)
Set db = Nothing
Set rst = Nothing
Next
OpenDAODB_End:
On Error GoTo 0
Exit Sub
OpenDAODB_Error:
Select Case Err.Number
Case Else
MsgBox Err.Number & " " & Err.Description
Resume OpenDAODB_End
End Select
End Sub
|
Вылетело с вашей ошибкой при i = 253
т.е. мне удалось отрыть 252 базы.
если в код перед
Set db = Nothing
добавить
db.Close
то при MAX_I = 5000 ошибки нет.
Разберитесь где у вас отрываются базы в таком количестве, посмотрите где описаны переменные в которые вы получаете текущую базу, где и когда они используются, где разрушаются. | |
|
| |