使用ms-access确定ODBC失败的真正原因(错误3146)?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用ms-access确定ODBC失败的真正原因(错误3146)?相关的知识,希望对你有一定的参考价值。

我的客户端使用Access作为SQL Server数据库的前端。他们最近在运行一些报告时不时开始收到ODBC-3146错误。据我所知,这只是一个通用的ODBC调用失败错误。

我已经尝试在启动报告的VB脚本中坚持一些错误处理,但我没有运气获得额外的错误信息。

代码看起来有点像这样。

Public Function RunReports()
  On Error GoTo MyErrorTrap

  DoCmd.OpenReport "blah", acViewPreview
  DoCmd.Close

  DoCmd.OpenReport "foo", acViewPreview
  DoCmd.Close

Exit_function:
  Exit Function

MyErrorTrap:
  Dim errX As DAO.Error
  Dim MyError As Error
  If Errors.Count > 1   'This always seems to be 0, so no help
    For Each errX In DAO.Errors  'These are empty even if dont check for Errors.Count
      Debug.Print "ODBC Error"
      Debug.Print errX.Number
      Debug.Print errX.Description
    Next errX
  Else
    Debug.Print "VBA Error"
    Debug.Print Err.Number
    Debug.Print Err.Description
  End If

  'Also have tried checking DBEngine.Errors, but this is empty too

End Function

我还在ODBC端启用了跟踪,但这已经让事情陷入困境,我到目前为止无法重新创建ODBC错误。

我完全愿意接受有关如何诊断这一问题的建议。

答案

使用DbEngine.Errors系列。

Sub Update_Temp()
On Error GoTo ErrorTrap
    ' Execute connect code at this point
Exit_errortrap:
    Exit Sub
ErrorTrap:
    Dim myerror As DAO.Error
    For Each myerror In DBEngine.Errors
        With myerror
            If .Number <> 3146 Then
                MsgBox .Description
            End If
        End With
    Next
    Resume Exit_errortrap

End Sub

要启用此代码,请确保在VBA设置中启用了错误处理。

以上是关于使用ms-access确定ODBC失败的真正原因(错误3146)?的主要内容,如果未能解决你的问题,请参考以下文章

除了 ms-access 之外,我可以使用哪些其他程序连接到 odbc 数据库

如何在 ms-access VBA 中检索表的 odbc 数据库名称

MS-Access ODBC 连接到 Oracle for SQL

RODBC 与 ms-access 错误 07002 17 [Microsoft][ODBC Microsoft Access Driver]COUNT 字段不正确

QT ODBC 驱动程序 .mdb ms-access 插入在 1000 行以上时不起作用(Windows)

我无法将 php 与 ms-access db 连接