ACC: Error Message "Method or Data Member not Found"

Last reviewed: August 28, 1997
Article ID: Q151572
The information in this article applies to:
  • Microsoft Access versions 7.0, 97

SYMPTOMS

Advanced: Requires expert coding, interoperability, and multiuser skills.

When you compile a module in which a procedure is attempting to call a procedure defined in a class module in another database, you may receive the following error message:

   Method or Data Member not Found.

CAUSE

Class modules are private in scope to the Visual Basic project in the database in which they are defined. Therefore, procedures in class modules cannot be referenced in another Visual Basic project.

This article assumes that you are familiar with Visual Basic for Applications and with creating Microsoft Access applications using the programming tools provided with Microsoft Access. For more information about Visual Basic for Applications, please refer to your version of the "Building Applications with Microsoft Access" manual.

RESOLUTION

You can use one of the following two methods to work around this behavior.

Method 1

Store the procedure in a standard module rather than a class module. This would make the procedure directly accessible from other databases but would require that you convert your class module procedures to standard module procedures.

Method 2

Create a function in a standard module in the database where the class module is defined. This function would call the procedure from the class module. Then, you would call this function from a standard module of another database. This allows you to leave your class module procedures as is, but would require that you write a standard procedure for each class module procedure you wish to run.

MORE INFORMATION

Although its not possible to directly call a procedure defined in a class module of another database from procedures outside of that database, you may notice that it is possible to call them from the Debug window. This is because Visual Basic for Applications relaxes privacy rules and scope restrictions in the Debug window to aid in debugging Visual Basic procedures.

Steps to Reproduce Behavior

  1. Start Microsoft Access and create a new database called Class.MDB.

  2. Open a new blank form in Design view.

  3. Click Code on the View menu to view the form's module.

  4. Create the following function:

    Option Compare Database Option Explicit

    Public Function ClassModuleTest()

              MsgBox "Hello"
           End Function
    
    

  5. Save and close the form as ClassForm.

  6. Close the database.

  7. Open the sample database Northwind.mdb.

  8. Open a new global module in Design view.

  9. On the Tools menu, click References.

  10. In the References dialog box, click the Browse button to browse for a new reference.

  11. In the Add References dialog box, under Files OF Type, select Databases.

  12. Select the Class.MDB database, and click OK to add it as a reference.

  13. Click OK to close the References dialog box.

  14. On the View menu, click Debug Window to open the Debug Window.

  15. Type the following line in the Debug window, and then press ENTER:

    In Microsoft Access 97:

    ? [Class].Form_ClassForm.ClassModuleTest()

    In Microsoft Access 7.0:

    ? [Class.MDB].Form_ClassForm.ClassModuleTest()

    Note that the procedure runs and the "Hello" message box is displayed.

  16. Create the following function:

    In Microsoft Access 97:

    Public Function RunClassProc() Dim x x = [Class].Form_ClassForm.ClassModuleTest() End Function

    In Microsoft Access 7.0:

    Public Function RunClassProc() Dim x x = [Class.MDB].Form_ClassForm.ClassModuleTest() End Function

  17. Attempt to compile the procedure by clicking Compile Loaded Modules on the Run menu. Note that you receive the following error message:

    Method or Data Member not Found.

REFERENCES

For more information about creating references to other databases, search the Help Index for "Referencing, Other Databases," or ask the Microsoft Access 97 Office Assistant.

For more information about class modules, search the Help Index for "Class Modules," or ask the Microsoft Access 97 Office Assistant.

Keywords          : kberrmsg kbprg PgmHowTo
Version           : 7.0 97
Platform          : WINDOWS
Hardware          : x86
Issue type        : kbprb
Solution Type     : Info_Provided


================================================================================


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: August 28, 1997
© 1998 Microsoft Corporation. All rights reserved. Terms of Use.