Notice: This website is an unofficial Microsoft Knowledge Base (hereinafter KB) archive and is intended to provide a reliable access to deleted content from Microsoft KB. All KB articles are owned by Microsoft Corporation. Read full disclaimer for more details.

ACC2000: "User-defined Type Not Defined" Error Message


View products that this article applies to.

This article was previously published under Q202192
Moderate: Requires basic macro, coding, and interoperability skills.

This article applies to a Microsoft Access database (.mdb) and to a Microsoft Access project (.adp).

For a Microsoft Access 2002 version of this article, see 289664 (http://support.microsoft.com/kb/289664/EN-US/ ) .

↑ Back to the top


Symptoms

When you compile or run code, you may receive the following error message:
Compile Error: User-defined type not defined.

↑ Back to the top


Cause

You are referring to an object in an object library that you do not have referenced.

↑ Back to the top


Resolution

You must add a reference to the object library that contains the object that you are using in code. To do so, follow these steps:
  1. Open any module in the database that is generating the error described in the "Symptoms" section of this article.
  2. On the Debug menu, click Compile <database name>. Note the line of code that is highlighted when you receive the error message.
  3. On the Tools menu, click References.
  4. Click to select the object library that contains the object referenced by the line of code that is highlighted.

↑ Back to the top


More information

NOTE: This section references Microsoft DAO. DAO is not used in Microsoft Access projects (*.adp), but the same concepts regarding missing object libraries apply.

Not having a reference to the Microsoft DAO Object Library is one of the most common reasons for the error described in the "Symptoms" section in Access databases (*.mdb). If the reference is missing, you may receive this error on many common DAO commands such as:
Dim db as DAO.Database
				
If you receive this error on a common DAO object, you need to add the following reference:
Microsoft DAO 3.6 Object Library

Explicitly Declaring DAO and ADO Objects

A common reference conflict occurs when you have references to both the Microsoft DAO Object Library (DAO) and the Microsoft ActiveX Data Objects Library (ADO). This is because these two libraries contain objects with the same name, such as Recordset. To avoid any compile errors in the case where you add another object library reference that uses the same object names, it is good practice to include "DAO." in the declaration of any DAO objects. Likewise, when declaring ADO objects, include "ADODB." in the declaration. This is illustrated below using the Recordset object as an example:

Example 1: DAO Objects

Reference: Microsoft DAO 3.6 Object Library
Declaration: Dim myRecordset as DAO.Recordset

Example 2: ADO Objects

Reference: Microsoft ActiveX Data Objects 2.1 Library
Declaration: Dim myRecordset as ADODB.Recordset

NOTE: By explicitly declaring the object as ADO or DAO, the position of the checked reference on the references list is not an issue.

Steps to Reproduce Behavior

  1. Create a module and type the following procedure:
    Function Test()
       Dim db as DAO.Database
    End Function
    					
  2. On the Tools menu, click to clear the Microsoft DAO Object Library check box.
  3. To test this function, type the following line in the Immediate window, and then press ENTER:
    ?Test()
    						
    Note that you receive the error message mentioned in the "Symptoms" section.

↑ Back to the top


References

For more information about ActiveX Data Objects (ADO), in the Visual Basic Editor, click Microsoft Visual Basic Help on the Help menu, type ActiveX Data Objects in the Office Assistant or the Answer Wizard, and then click Search to view the topic.

↑ Back to the top


Keywords: KB202192, kbprb

↑ Back to the top

Article Info
Article ID : 202192
Revision : 3
Created on : 6/28/2004
Published on : 6/28/2004
Exists online : False
Views : 226