ACC2000: Compile Error After Converting Database with Old DAO CodeID: Q199064
|
If you open a database created in an earlier version of Microsoft Access, and you try to run or compile code that uses Data Access Objects (DAO), you may see a compile error.
Versions earlier than Microsoft Access 2000 provided ways to allow older syntax used in earlier versions to compile and run. For example, the object model for DAO in Microsoft Access 2.0 changed significantly from version 1.0; however, DAO in Access 2.0 would still allow the code from 1.0 to compile and run without the need to reference a type library. In Microsoft Access versions 7.0 and 97, the DAO 2.5/3.0 and DAO 2.5/3.5 compatibility type libraries were included. These libraries were used by default for converted Access 2.0 databases, and therefore still allowed the older legacy code originating from Access version 1.0 to work in Access versions 7.0 and 97.
Microsoft Access 2000, however, has no compatibility type libraries, and therefore, DAO code that uses some of the older syntax may not run.
Update your code to the current DAO syntax.
For more information about and examples of how to update legacy DAO code, in the Visual Basic Editor, click Microsoft Visual Basic Help on the Help menu, type "DAO Object Library Compatibility" in the Office Assistant or the Answer Wizard, and then click Search to view the topic.
CAUTION: Following the steps in this example will modify the sample
database Northwind.mdb. You may want to back up the Northwind.mdb file
and perform these steps on a copy of the database.
Sub TestOpenRec()
Dim dbs As Database
Set dbs = CurrentDb
Dim dyn As Dynaset
Set dyn = dbs.CreateDynaset("Orders")
MsgBox dyn.Fields.Count
End Sub
TestOpenRec
Note that no errors are returned and the number 14 shows in the message box, indicating the number of fields in the Orders table.
TestOpenRec
Note that you receive the following error message:Compile Error: User-defined type not defined.
Sub TestOpenRec()
Dim dbs As DAO.Database
Set dbs = CurrentDb
Dim rst As Recordset
Set rst = dbs!Orders.OpenRecordset(dbOpenDynaset)
MsgBox rst.Fields.Count
End Sub
Additional query words: prb
Keywords : kbdta
Version : WINDOWS:2000
Platform : WINDOWS
Issue type : kbprb
Last Reviewed: May 28, 1999