访问2007年升级DAO引用冲突
我正在将Access 97数据库W / VBA代码更新到Access 2007. VBA代码使用DAO对象,在将数据库文件(首先从97更改为2002,然后更改为2007)转换为Access 2007时引用了该对象。 我的问题具体是与两个引用:“Microsoft DAO 3.6对象库”和“Microsoft Office 12.0 Access数据库引擎对象库”。 我在网上看到的东西说,ADE 12.0应该取代DAO 3.6参考,并且只需检查ADE 12.0盒,一切都应该可行。 由于它们都为同名的对象提供引用,因此不能同时检查这两个引用。 但是,当检查DAO 3.6框,并未选中ADE 12.0框时,Access无法找到存在的“frmLogin”表单。 如果我取消选中DAO 3.6盒子并检查ADE 12.0盒子,我得到了Visual Basic“Err”对象的运行时错误13:“类型不匹配”:
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
调试器指出倒数第二行:
Err.Raise Err.Number, "basGetString", Err.Description
我已经成功地消除了记录集对象的歧义,它解决了代码中的许多其他引用冲突: Dim rs As DAO.Recordset or Dim rs As ADODB.Recordset
,但这不适用于Err对象。 - 也就是说,我试图将Err对象重写为DAO错误对象。 我还无法在VB编辑器中找到解决此参考错误的其他参考,但不会与其他ADE 12.0参考发生冲突。 所以,我不明白为什么检查ADE 12.0盒子不能解决我所有的问题。 而且我很难弄清楚如何重写代码,以便它引用ADE 12.0库。 最后,ADE 12.0参考实际指向以下文件夹中的ACEDAO.DLL:C: Program Files Common Files Microsoft Shared OFFICE12。 任何建议将非常感激。
如果您在A2007中运行,则需要使用ADE参考(这只是DAO的下一个版本 - 如果您不相信,请查看DLL名称)。 如果在检查时仍然出现编译错误,那意味着它未被注册(并且您可以使用regsvr32手动注册),或者您有其他参考问题。 请张贴您的参考清单。 我敢打赌,其中几个是完全没有必要的。 另外,如果您运行多个版本的Access,则需要让每个人在打开任何文件之前完成注册(即安装)。
- 大卫W-芬顿8年8月5日在20:13
链接地址: http://www.djcxy.com/p/54017.html