Microsoft KB Archive/174342

From BetaArchive Wiki
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

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


  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 regularly 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 doesn t

Keywords: kbbug kberrmsg KB174342