Kenneth Ismert
kismert at gmail.com
Thu Dec 15 17:08:13 CST 2011
Here is my proposal for how to best fix Form Control Limit problems:
Control Limits
===========
Access imposes limits on how may controls you can put on a form or report:
A97 - 753
A2000 - 800
A2002 - 894
A2007 - 1040
A2010 - 1040
Thanks to Jim Dettman for working out these limits.
If you try to add more controls than your version of Access allows, you
will see:
Error: 29053
<database> can't create any more controls on this form or report.
At this point, check the number of controls on the form:
? forms("Form1").Controls.Count
If that number is less than the stated limit, you can still add more
controls, but you have to reset the control counter. Here's how:
Access 2000 or Later
=================
If you CREATED the form in Access 2000 or later, follow these steps:
Application.SaveAsText acForm, "Form1", CurrentProject.Path & "\Form_Form1"
Application.LoadFromText acForm, "Form1", CurrentProject.Path &
"\Form_Form1"
This should reset your control list, allowing you to keep adding up to the
stated limit. Notes:
* This is a lot easier than copying the controls to a new form, and
manually changing all form properties to match the old
* EatBloat will also reset the counter for such forms, as it uses this
basic technique
Access 97
========
If the form was created in Access 97, and you imported it into a later
version, there is more work to do. Follow these steps:
1. Rename all form controls with a default numeric suffix, like 'label123'
and 'text234'. This eliminates all possibility of name collisions.
2. In the Immediate window, count the number of controls:
? Forms("Form1").Controls.Count
2. Save the form as text:
Application.SaveAsText acForm, "Form1", CurrentProject.Path &
"\Form_Form1.txt"
3. Edit "Form_frmFoo.txt" using a text editor. Find this attribute, and
edit it to the number of controls +1:
ItemSuffix =128
4. Import the form using:
Application.LoadFromText acForm, "Form1", CurrentProject.Path &
"\Form_Form1.txt"
-Ken