Microsoft KB Archive/198650

= ACC2000: "Method or Data Member Not Found" Error Message =

Article ID: 198650

Article Last Modified on 7/16/2004

-

APPLIES TO


 * Microsoft Access 2000 Standard Edition

-



This article was previously published under Q198650



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



SYMPTOMS
When you compile a module that has a procedure which tries to call another procedure that is 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.



RESOLUTION
Use one of the following two methods to work around this behavior.

Method 1
Store the procedure in a standard module rather than in a class module. This makes the procedure directly accessible from other databases but requires 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 calls the procedure from the class module. Then, you call this function from a standard module of another database. This allows you to leave your class module procedures as they are, but requires that you write a standard procedure for each class module procedure that you want to run.



MORE INFORMATION
Although you cannot directly call a procedure defined in a class module of another database from procedures outside of that database, you may notice that you can call them from the Immediate window. The reason for this is that Visual Basic for Applications relaxes privacy rules and scope restrictions in the Immediate window to aid in debugging procedures.

Steps to Reproduce Behavior
 Start Microsoft Access and create a new database called Class.mdb. Open a new blank form in Design view. On the View menu, click Code.  Type the following function: Option Compare Database Option Explicit

Public Function ClassModuleTest MsgBox "Hello" End Function  Save the form as ClassForm, and then close it.</li> Close the database.</li> Open the sample database Northwind.mdb.</li> Open a new global module in Design view.</li> On the Tools menu of the Visual Basic Editor, click References.</li> In the References dialog box, click Browse.</li> In the Add References dialog box, click Microsoft Access Databases (*.mdb) in the Files of type list.</li> Click Class.mdb, and then click Open to add the database as a reference.</li> Click OK to close the References dialog box.</li> On the View menu, click Immediate Window.</li> Type the following line in the Immediate window, and then press ENTER:

? [Class].Form_ClassForm.ClassModuleTest

Note that the procedure runs and the "Hello" message box is displayed.</li>  Type the following function: Public Function RunClassProc Dim x x = [Class].Form_ClassForm.ClassModuleTest End Function </li> Try to compile the procedure by clicking Compile Northwind on the Run menu. Note that you receive the following error message:

Compile Error:

Method or Data Member not Found.

</li></ol>

<div class="references_section">