Форумы HiProg.com - MS ACCESS, VBA, VB

 

Ответить на сообщение

Вернуться к теме

Вы отвечаете на сообщение:

ник: osmor
Определить кол-во открытых ДБ в активном воркпрейсе можно так
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 ошибки нет.

Разберитесь где у вас отрываются базы в таком количестве, посмотрите где описаны переменные в которые вы получаете текущую базу, где и когда они используются, где разрушаются.


Ваше имя:

Пароль:

Цитировать: [quote][/quote] Код: [code][/code]
Жирный: [b][/b] Наклонный: [i][/i]
URL: [url][/url] 

Сообщение:

 Размер файла не более 50 Кбт. Большие файлы можно размещать на www.slil.ru

Прикрепить:

 

Для вставки смайлов в текст щелкните по значку.