Cannot Open any more databases

Occasional Contributor

I have built an Access database that is throwing up error code 3048; "Cannot open any more databases". It has been doing it for a couple of years. I am using MS 365 on Win-10 Pro and it is all up to date. The system is totally hand built, using VBA, rather than macros. No templates were involved.

 

There is a support case with Microsoft on this, but it was not resolved there. Support Case: 25328611

 

I have done a full compact and repair many times and have even rebuilt the database by opening a new one and importing all the forms, queries, tables, etc. It is a split database that multiple people use, but the problem comes regardless of how many people are on the system - even just one person.

 

I have also increased the MaxLocksPerFile in the registry of the PCs using this database but this did not stop the problem.

 

I read that not closing record-sets and other objects could cause this problem, so I went through all of the code and added a number of closing statements that were missing, but this did not handle it.

 

The system has a number of forms that need to be opened and stay open, so I have them all on large tab control so I can flip between the open forms easily. Most of the forms use combo drop-down boxes as part of the filtering; like a drop-down listing all the staff, so one can be chosen to look at their jobs. And many of the queries under the forms use dynamic lookups to get data from other related tables.

 

It seems to have gotten worse in the last couple of months, so I am wondering if there was an update that impacted this area.

 

In any case, I would really like to solve this. Can anyone help?

 

I am in Sydney, Australia, by the way, so I may not respond immediately, due to the time zone difference to most users.

 

 

8 Replies

@NeilClark 

This message often occurs when Access has used up all available connections. See my utility Available Connections - Mendip Data Systems which you can use to check the issue and from that work out ewhat needs to be changed to solve your issues

@isladogs 

 

Thanks for that - I'll check it out and let you know how I get on.

I have downloaded your Available Connections form and report and plugged them into the offending database and I can now see the connections dropping each time I open another form.

Previously, I have gone right through all of the code and made sure all objects and record-sets were closed and set to nothing when the form was closed. In fact, I can see that this seems to be the case, because when I open and close the forms now, the number of connections reverts to the previous level it was before opening them, so all items have been successfully closed.

The next question is; how do I further reduce the use of connections in my forms. I am obviously building my forms in a way that uses too many connections. How can I reduce that?

@NeilClark 

As you may already know, Access has a total of 255 available connections.
Each open object with a record source/row source consumes 1 or more connections.
If the number of available connections drops too far, the error message you are getting may occur.

Closing recordsets after use is good practice and, as noted, this should allow Access to recover those connections.
However, your original post stated:


@NeilClark wrote:
The system has a number of forms that need to be opened and stay open, so I have them all on large tab control so I can flip between the open forms easily. Most of the forms use combo drop-down boxes as part of the filtering; like a drop-down listing all the staff, so one can be chosen to look at their jobs. And many of the queries under the forms use dynamic lookups to get data from other related tables.

Having all of these open at once is likely to be your issue. How many connections does all of this 'consume'?

 

Remember that subforms are loaded before the main form. So if you have a number of subforms on your tab control together with combos and dynamic lookups you are going to put Access under stress!

 

I suggest you only load each form as and when needed and close it when moving to another form / tab

OR only load the recordsource for each subform when it is activated. Similarly for your combos/ queries of possible. Then close each of these or clear the row source / record source when you move to another subform / tab

 

Hope that helps you move forward

OK - thanks a lot for your wanting to help - it makes a big difference!

I will see how it works if I close each form when I open a new one. That seems to be the only way out that I can see just now. Will let you know how it goes.
No problem. Sorry about the delay replying. I was offline most of today.
You didn't say how many connections were being used / how many are remaining before making any change to your app
I did a test run with your little form open, starting with the opening page and then opening the others one-by-one. They each took about 24 to 40 connections, so eventually I ran out of connections and it bombed out.

@NeilClark 

That is a lot of connections for each form and you state you have multiple forms open at once.

No wonder you are having issues

 

Very few, if any of my forms are that resource hungry.

Most of my forms use 4 connections. A form with 12 combos uses just 2 connections

Even a very complex form with 11 subforms only uses 18 connections

 

I suggest you do a detailed review of your app and consider changing your approach

Even before the app crashes, performance will suffer as so many connections are in use

 

If you want to upload a copy of your db with all sensitive data removed, I may be able to make some specific suggestions that may help