Limits are reached - if I open one more form: Error 3048: Cannot open any more databases
I have 2 reports and 1 form open. Each of theses has complex data sources (with many joins, subqueries...). If I open an fourth report - I get the error message.
I think the limits are to low. Please upgrade them.

5 comments
-
Ben Sacheri commented
I made a form that can tell you what how many more "databases" you can open. The max is probably 255 but after internal objects load I start with around 242. Every open table uses a connection. Every linked table uses 2 connections. The counts may not always add up as you would expect.
Think of my form as a "gauge" to help you see how close you are to running out of connections. Using this information you can focus on which objects to optimize to use less connections.https://access.wordpress.com/2014/04/01/how-many-database-connections-are-still-available-in-an-access-database/
-
Jack Stockton commented
This is a memory issue with using 32bit Access.
-
Jim S commented
The number of table/file handles that MS as allocated is too low (2048) and really needs to be increased. Complex forms, combo boxes, linked tables cause the limit to be reached with comprehensive solutions. Workarounds and design changes can help but the limit needs to be increased. Please, Please Please.
-
Pat Hartman commented
Your database is probably corrupted. Start with compact & repair. If that doesn't work, try rebuilding by starting a new, empty database and importing all objects. Don't forget to reset the back page settings if needed.
-
Anonymous commented
to test the problem, run the function with an open table
then with others ...Public Function MaxOpenDatabase(Optional plngLevel As Integer = 1) As Integer
Dim db As DAO.DatabaseOn Error GoTo ErrorHandler
Set db = CurrentDb()
' Appel récursif
plngLevel = MaxOpenDatabase(plngLevel + 1)
' Sort de récursivité
EndSub:
Set db = Nothing
MaxOpenDatabase = plngLevel
Exit FunctionErrorHandler:
If Err.Number = 3048 Then
' Cannot open any more databases.
ElseIf Err.Number = 3014 Then
' Cannot open any more tables.
End If
GoTo EndSubEnd Function