Microsoft KB Archive/174342

= ACC: User-Level Security Wizard Doesn't Add Library References =

Article ID: 174342

Article Last Modified on 1/20/2007

-

APPLIES TO


 * Microsoft Access 95 Standard Edition
 * Microsoft Access 97 Standard Edition

-



This article was previously published under Q174342



Moderate: Requires basic macro, coding, and interoperability skills.



SYMPTOMS
When you use the User-Level Security Wizard to secure a database that references libraries other than those included by default, code in the resulting database may not compile correctly. You receive the following error messages:

Compile Error: Variable not defined

  -or-

Compile Error: User-defined type not defined



CAUSE
The wizard creates a new default database into which it imports the objects from the unsecured database. References to libraries that existed in the unsecured database are not automatically created in the new secure database.



RESOLUTION
Make sure that the same library references selected in the original, unsecured database are also selected in the new, secured database. To do so, follow these steps:


 * 1) Open the original, unsecured database in Microsoft Access.
 * 2) In the Database window, click the Modules tab.
 * 3) Select any module and click Design, or if no modules exist in the Modules window, click New.
 * 4) On the Tools menu, click References.
 * 5) Write down the name of each library that has a check mark next to its name.
 * 6) Click Close; then close the module, and close the unsecured database.
 * 7) Open the new, secured database in Microsoft Access.
 * 8) In the Database Window, click the Modules tab.
 * 9) Select any module and click Design, or if no modules exist in the Modules window, click New.
 * 10) On the Tools menu, click References.
 * 11) In the References dialog box, click to select the check boxes for the same libraries selected in the unsecured database.
 * 12) Click OK.
 * 13) On the Debug menu, click Compile Loaded Modules.



STATUS
Microsoft has confirmed this to be a problem in the Microsoft products listed at the beginning of this article.



MORE INFORMATION
When Microsoft Access creates a new database, three references are included by default. These references are as follows.

Microsoft Access 7.0

 * Visual Basic For Applications
 * Microsoft Access for Windows 95
 * Microsoft DAO 3.0 Object Library

Microsoft Access 97

 * Visual Basic For Applications
 * Microsoft Access 8.0 Object Library
 * Microsoft DAO 3.5 Object Library

The procedure in the "Steps to Reproduce Problem" section is intended to duplicate the error described in the "Symptoms" section. It does not indicate the correct way to secure a Microsoft Access database. Please see the "References" section for more information about Microsoft Access Security.

Steps to Reproduce Problem
 Open any sample database in Microsoft Access. In the Database window, click the Modules tab. Click New. On the Tools menu, click References.</li> Click to select the Microsoft Office 8.0 Object Library.

NOTE: If you are using Microsoft Access 7.0, click to select the Microsoft Office 95 Object Library.</li> Click OK.</li>  Type the following code into the module:

Function LostReference ' This function sets the variable X to a constant that is         ' defined in the Microsoft Office Object Library. If         ' there is no reference to the Microsoft Office Object ' Library, this code generates a compile error. The ' Microsoft Office Object Library is not referenced ' by default. Dim X         X = offPropertyTypeDate End Function </li> On the Debug menu, click Compile Loaded Modules. (Note: Use the Run menu in Access 7.0).</li> On the File menu, click Save; then type TestModule in the Module Name box.</li> Close the Module.</li> On the Tools menu, point to Security, and then click User-Level Security Wizard. Follow the instructions provided by the wizard.

NOTE: You will receive a warning message if you are logged in as the Admin user:

You are currently logged on as the Admin user. If you continue, the database and all objects in it will be unsecured. Do you want to continue?

Click Yes; this will not affect this example.</li> Open the newly secured database in Microsoft Access.</li> In the Database window, click the Modules tab.</li> Select TestModule from the Database window and click Design.</li> On the Debug menu, click Compile Loaded Modules. (Note: Use the Run menu in Access 7.0).

Note that you receive one of the error messages described in the "Symptoms" section.</li></ol>

<div class="references_section">