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

Last reviewed: October 13, 1997
Article ID: Q174342
The information in this article applies to:
  • Microsoft Access versions 7.0, 97

SYMPTOMS

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

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. We are researching this problem and will post new information here in the Microsoft Knowledge Base as it becomes available.

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

  1. Open any sample database in Microsoft Access.

  2. In the Database window, click the Modules tab.

  3. Click New.

  4. On the Tools menu, click References.

  5. 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.

  6. Click OK.

  7. 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

  8. On the Debug menu, click Compile Loaded Modules. (Note: Use the Run
     menu in Access 7.0).

  9. On the File menu, click Save; then type TestModule in the Module Name
     box.

 10. Close the Module.

 11. 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.

 12. Open the newly secured database in Microsoft Access.

 13. In the Database window, click the Modules tab.

 14. Select TestModule from the Database window and click Design.

 15. 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.

REFERENCES

For more information about References, search the Help Index for "References, type."

For more information about security, search the Help Index for "security, securing a database," or ask the Microsoft Access 97 Office Assistant.

For additional information, see the Microsoft Access Security FAQ which is located on the following Microsoft World Wide Web site:

   http://support.microsoft.com/support/access/content/secfaq.asp

NOTE: Because the Microsoft Web site is constantly updated, the site address may change without notice. If this occurs, link to the Microsoft home page at the following address:

   http://www.microsoft.com/


Additional query words: prb OFF97
Keywords : kberrmsg
Version : WINDOWS:7.0,97
Platform : WINDOWS
Hardware : x86
Issue type : kbbug
Solution Type : kbworkaround


THE INFORMATION PROVIDED IN THE MICROSOFT KNOWLEDGE BASE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND. MICROSOFT DISCLAIMS ALL WARRANTIES, EITHER EXPRESS OR IMPLIED, INCLUDING THE WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL MICROSOFT CORPORATION OR ITS SUPPLIERS BE LIABLE FOR ANY DAMAGES WHATSOEVER INCLUDING DIRECT, INDIRECT, INCIDENTAL, CONSEQUENTIAL, LOSS OF BUSINESS PROFITS OR SPECIAL DAMAGES, EVEN IF MICROSOFT CORPORATION OR ITS SUPPLIERS HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. SOME STATES DO NOT ALLOW THE EXCLUSION OR LIMITATION OF LIABILITY FOR CONSEQUENTIAL OR INCIDENTAL DAMAGES SO THE FOREGOING LIMITATION MAY NOT APPLY.

Last reviewed: October 13, 1997
© 1998 Microsoft Corporation. All rights reserved. Terms of Use.