ID: Q160011
The information in this article applies to:
Moderate: Requires basic macro, coding, and interoperability skills.
When you open the Object Browser in Microsoft Access 97, you cannot view any of the form or report class modules in a referenced database.
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 the "Building Applications with Microsoft Access 97" manual.
Microsoft Access 97 corrects an anomaly with class module visibility that exists in Microsoft Access 7.0 by not allowing you to browse or view any form, report, or stand-alone class modules in a referenced database.
Microsoft Access 7.0 allows you to use the Object Browser to browse forms and reports (stand-alone class modules are not supported in version 7.0), and to call their methods and properties. Microsoft Access 97 corrects this behavior by marking all form, report and stand-alone class modules as private.
To make a class module visible in the Object Browser, declare a public variable in a standard module in the referenced database that encapsulates the class module.
Microsoft Access 7.0 and 97 both support calling functions from an external database by creating a Visual Basic for Applications reference. This allows you to use the Object Browser to view functions marked as Public in a referenced database, and call the code from within the current database.
The following example creates a class object in a referenced database to demonstrate how to call functions in a class module of a referenced database, and to illustrate how the reference appears in the Microsoft Access 97 Object Browser.
1. Create a new database called ClassTestRef.mdb.
2. On the Insert menu, click Class Module.
3. Save the class module as clsTest.
4. Select Class in the Object box of the module window. "Initialize" is
automatically selected in the Procedure box of the module window.
5. Type the following procedure for the Initialize event:
Private Sub Class_Initialize()
On Local Error GoTo Class_Initialize_Err
Dim Msg As String
MsgBox "Class Initialized", vbInformation, "Class Example"
Class_Initialize_End:
Exit Sub
Class_Initialize_Err:
Msg = "Error #: " & Format$(Err.Number) & vbCrLf
Msg = Msg & Err.Description
Err.Raise vbObjectError, "clsTest.Initialize (Private)", Msg
Resume Class_Initialize_End
End Sub
6. Type the following public procedure:
Public Function CallClass()
MsgBox "clsTest.CallClass method", _
vbInformation, "Class Example"
End Function
7. Save and close the clsTest class module.
8. Create a new standard module by clicking Module on the Insert menu.
9. Type the following line in the Declarations section:
Public cls As New clsTest
10. Save the module as modTest and close it.
11. Close the ClassTestRef.mdb database.
1. Create a new database called ClassTestFront.mdb.
2. Create a new standard module by clicking Module on the Insert menu, and
then save the module as Module1.
3. On the Tools menu, click References.
4. In the References dialog box, click Browse.
5. In the Add Reference dialog box, select Microsoft Access Databases
(*.mdb) in the File name box, and then select the ClassTestRef.mdb
file. Click OK.
6. Note the new reference to ClassTestRef in the References dialog box,
and then click OK.
7. Type the following procedure in the open module. This procedure calls
the public CallClass function of the clsTest class module in the
ClassTestRef database:
Public Function TestClass() As Boolean
cls.CallClass
TestClass = True
End Function
8. To test this function, type the following line in the Debug window,
and then press ENTER.
? TestClass()
Note that you receive two message boxes; the first one displays the
text "Class Initialized," and the second one displays the text
"clsTest.CallClass method."
9. Open Module1 in Design view.
10. On the View menu, click Object Browser.
11. Select ClassTestRef in the Project/Library box. Note that only modTest
is visible in the Classes box, and that you can see the public variable
cls that it contains; the class module clsTest is not visible in
the Object Browser.
For more information about class modules, search the Help Index for "class modules," or ask the Microsoft Access 97 Office Assistant.
For more information about the Object Browser, search the Help Index for "Object Browser," or ask the Microsoft Access 97 Office Assistant.
Additional query words: ClassMod OLE instance
Keywords : kbusage MdlLib
Version : 97
Platform : WINDOWS
Hardware : x86
Issue type : kbprb
Last Reviewed: November 21, 1998