You receive a "Type mismatch" error when you run the OpenRecordset method (181542)



The information in this article applies to:

  • Microsoft Visual Basic Enterprise Edition for Windows 5.0
  • Microsoft Visual Basic Enterprise Edition for Windows 6.0
  • ActiveX Data Objects (ADO) 2.7
  • ActiveX Data Objects (ADO) 2.1 SP2
  • ActiveX Data Objects (ADO) 2.5
  • ActiveX Data Objects (ADO) 2.6
  • Microsoft Visual Basic Learning Edition for Windows 5.0
  • Microsoft Visual Basic Learning Edition for Windows 6.0
  • Microsoft Visual Basic Professional Edition for Windows 5.0
  • Microsoft Visual Basic Professional Edition for Windows 6.0
  • Microsoft Access 2000

This article was previously published under Q181542

SYMPTOMS

If you dimension an object as a Recordset and then set that object to databaseobject.OpenRecordset(source), you may receive the following error message:
Run time error '13': Type mismatch

CAUSE

If your project contains references to both the Data Access Objects (DAO) library and the ActiveX Data Objects (ADO) library, you may see multiple Recordset entries in the list when you dimension the Recordset object. This error occurs when you list the ADO library with a higher priority than the DAO library in the References dialog box, regardless of which Recordset entry you select from the list.

RESOLUTION

If you need only the DAO Recordset object, make sure that the reference for the DAO object library has a higher priority in the References dialog box, or clear the reference to Microsoft ActiveX Data Objects.

If you must reference and use both DAO and ADO Recordset objects, dimension the objects explicitly as follows:
   Dim adoRS As ADODB.Recordset
   Dim daoRS As DAO.Recordset
				

MORE INFORMATION

Steps to reproduce the behavior

  1. Start Visual Studio. The New Project dialog box appears.
  2. Click Open. The Form1 form appears.
  3. Right-click the Form1 form, and then click View Code. The Project1 - Form1 (Code) window appears.
  4. Paste the following code in the Project1 code page:
    Dim dbs AS Database
    Dim rs AS Recordset  ' When you press the spacebar after "AS," the
                               ' list box includes multiple Recordset entries.
                               ' Pick any Recordset item, or type "Recordset."
    Private Sub Form_Load()
    Set dbs=OpenDatabase(dbname)
    Set rs=dbs.OpenRecordset(source)  ' The error occurs when this line
                                            ' of code executes.
    End Sub
    
  5. On the Project menu, click References. The References - Project1 dialog box appears.
  6. Click Microsoft DAO 3.x Object Library, click Microsoft ActiveX Data Objects 2.x Library, and then click OK.

    Note Make sure that the ADO library has the higher priority in the References dialog box list above the DAO library.
  7. On the Run menu, click Start to run the program. You may receive the error message that is mentioned in the "Symptoms" section.

Modification Type:MinorLast Reviewed:1/12/2006
Keywords:kbprb KB181542 kbAudDeveloper