Access 2007 upgrade DAO references conflict

I am updating an Access 97 DB w/ VBA code to Access 2007. The VBA code uses DAO objects that Access 2007 references when I converted the db files (first from 97 to 2002, then to 2007). My problem specifically is with the two references: "Microsoft DAO 3.6 Object Library" and "Microsoft Office 12.0 Access database engine Object Library." The stuff I've read on the web says that the ADE 12.0 is supposed to supercede the DAO 3.6 reference, and that by just checking the ADE 12.0 box everything should work. Since they both provide references for objects of the same name, these two references cannot be checked at the same time. However, when check the DAO 3.6 box, and leave the ADE 12.0 box unchecked, Access can't find a "frmLogin" form that exists. If I uncheck the DAO 3.6 box and check the ADE 12.0 box, I get a run-time error 13: "type mismatch" for a Visual Basic "Err" object:

Public Function basGetString(ByVal lngStringID As Long, ParamArray varStringArgs() _
      As Variant) As String
     Dim intTokenCount As Integer
     Dim strResString As String

On Error GoTo err_basGetString

    strResString = basLoadString(lngStringID)

    If Not IsMissing(varStringArgs) Then
        intTokenCount = 0

         Do While intTokenCount <= UBound(varStringArgs)
              strResString = basReplaceToken(strResString, _
              m_cstrArgToken, varStringArgs (LBound(varStringArgs) + intTokenCount),_   
              1, 1)

              intTokenCount = intTokenCount + 1
         Loop
    End If

    strResString = basReplaceToken(strResString, m_cstrVBCRLFToken, vbCrLf, -1, 1)
    basGetString = strResString

 exit_basGetString:
      Exit Function
 err_basGetString:
      Err.Raise Err.Number, "basGetString", Err.Description

 End Function

The debugger points the the second-to-last line:

Err.Raise Err.Number, "basGetString", Err.Description

I have been successful disambiguating recordset objects, which resolved many of the other referencing conflicts in the code: Dim rs As DAO.Recordset or Dim rs As ADODB.Recordset , but this hasn't worked with the Err object. -That is, I've tried to rewrite the Err object as a DAO Error object. I also have not been able to find another reference in the VB editor that resolves this referencing error, but doesn't also conflict with the other ADE 12.0 reference. So, I don't understand why checking the ADE 12.0 box doesn't solve all my problems. And I'm having trouble figuring out how to rewrite the code so that it references the ADE 12.0 library instead. Lastly, the ADE 12.0 reference is really pointing to the ACEDAO.DLL in the following folder: C:Program FilesCommon FilesMicrosoft SharedOFFICE12. Any suggestions would be really appreciated.


If you're running in A2007, you need to use the ADE reference (which is just the next version of DAO -- have a look at the DLL name if you don't believe it). If you still get compile errors when that's checked, then that means it's either not registered (and you could register it manually with regsvr32) or you have a different reference problem. Please post your list of references. My bet is several of them are completely unnecessary. Also, if you're running multiple versions of Access, you need to let each of them finish registering (ie, installing) before opening any files.

– David-W-Fenton Aug 5 '10 at 20:13

链接地址: http://www.djcxy.com/p/54018.html

上一篇: Javascript中的多重键检测

下一篇: 访问2007年升级DAO引用冲突