Derek Brown
asked on
Printing Problem
I suddenly have started getting this message when printing. I only have one database open.
Cannot open any more databases. (Error 3048)
You have reached the limit on the number of databases that can be opened at one time. Close one or more databases and try the operation again.
Cannot open any more databases. (Error 3048)
You have reached the limit on the number of databases that can be opened at one time. Close one or more databases and try the operation again.
SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
Do you think this might be the problem then. Tis a little complex. The code simply opens the report. The query behind it has 210 fields.
I do have 4 Dlookups but deleting them did not help.
I am not using any Locks.
I don't know how I would find out if I am using more than 2 G in memory. Would Task manager help?
Capture.PNG
Capture1.PNG
I do have 4 Dlookups but deleting them did not help.
I am not using any Locks.
I don't know how I would find out if I am using more than 2 G in memory. Would Task manager help?
Capture.PNG
Capture1.PNG
<<Do you think this might be the problem then. Tis a little complex. The code simply opens the report. The query behind it has 210 fields.>>
Again, every field reference also carries a table reference. Just looking at your report, I would think your bumping into the table ID limit.
Quick test:
1. Open your report
2. Do a "save as" and save it under a new name.
3. Close the report.
4. Open the *new* report and delete all but a few controls.
5. Save
6. Now execute the new report.
If you don't get the error, you have your answer.
<<I do have 4 Dlookups but deleting them did not help.>>
That might not have been enough.
<<I am not using any Locks.>>
Yes you are....you are always using locks in a DB. In this case, read locks are getting placed when the report runs.
<<I don't know how I would find out if I am using more than 2 G in memory. Would Task manager help?>>
Not memory....database size. Access will often use some internal space to execute things....if that pushes the DB size over the 2GB limit, it triggers an error.
Do a compact and repair on the DB.
Jim.
Again, every field reference also carries a table reference. Just looking at your report, I would think your bumping into the table ID limit.
Quick test:
1. Open your report
2. Do a "save as" and save it under a new name.
3. Close the report.
4. Open the *new* report and delete all but a few controls.
5. Save
6. Now execute the new report.
If you don't get the error, you have your answer.
<<I do have 4 Dlookups but deleting them did not help.>>
That might not have been enough.
<<I am not using any Locks.>>
Yes you are....you are always using locks in a DB. In this case, read locks are getting placed when the report runs.
<<I don't know how I would find out if I am using more than 2 G in memory. Would Task manager help?>>
Not memory....database size. Access will often use some internal space to execute things....if that pushes the DB size over the 2GB limit, it triggers an error.
Do a compact and repair on the DB.
Jim.
ASKER
Yes I guess it was obvious really. Your suggestions are helpful and I will get onto it.
ASKER
Is it necessary to have all of these fields in the report. Most are not seen but if I want to show Frame height I have to have that field or control on the report (albeit hidden) even if the text on the report uses the Me.Print FrameHeight any way around this? If so I could remove most of the controls on the report.
<< Me.Print FrameHeight>>
Not sure what your talking about here and even if the controls are hidden, there still would be a table reference.
Your only option at this point would be to print some of the fields on one report, then print more info on a second.
There is no workaround or change you can make for the internal table ID limit.
Jim.
Not sure what your talking about here and even if the controls are hidden, there still would be a table reference.
Your only option at this point would be to print some of the fields on one report, then print more info on a second.
There is no workaround or change you can make for the internal table ID limit.
Jim.
ASKER
This Jim
See I don't show any of the encircled controls (Fields) on the drawing. But they are referred to by the report's code to create the drawing
Capture2.PNG
See I don't show any of the encircled controls (Fields) on the drawing. But they are referred to by the report's code to create the drawing
Capture2.PNG
ASKER
If I created a query based on the query that has 210 fields but only used one field from it, does access still count the entire 210 fields from the original query
Would I have the same problem working with Access 13 instead of 2002
Would I have the same problem working with Access 13 instead of 2002
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
<<If I created a query based on the query that has 210 fields but only used one field from it, does access still count the entire 210 fields from the original query>>
Yes, that uses 211 table ID's then. Keep in mind that it's not what you are working with, but what Access is working with to do what you want.
<<Would I have the same problem working with Access 13 instead of 2002>>
Yup. The internal table ID was changed (forget when off-hand - believe it was with A2000) from 1024 to 2048, but that's been the only change in this area.
Jim.
Yes, that uses 211 table ID's then. Keep in mind that it's not what you are working with, but what Access is working with to do what you want.
<<Would I have the same problem working with Access 13 instead of 2002>>
Yup. The internal table ID was changed (forget when off-hand - believe it was with A2000) from 1024 to 2048, but that's been the only change in this area.
Jim.
ASKER
Thank you all
Very helpful
I do hope point share is fair
Derek
Very helpful
I do hope point share is fair
Derek
Besides the obvious error of actually trying to work with too many DB's, I've seen this error in three other cases:
1. DB is exceeding the 2GB limit in performing a process.
2. The internal table ID limit is being exceeded.
3. Number of locks is exceeds the lock limit.
For #2, the internal table limit is approx 2048 (it floats a bit). Every object, form, query, field, etc if referencing a table in some way, chews up a table ID.
For example, a query has a reference for each table it's working with, and each field your working with carriers a table reference as well. This is another reason why you simply don't output all fields in a query.
So first, make sure your not anywhere near the 2GB limit on the DB (do a compact and repair). Then for this report, make sure you don't reference anything you don't need.
Last, increase the MaxLocksPerFile setting using SetOption to something like 200,000 to make sure your not running out locks.
Jim.