My client is using Access as a front end to a SQL Server database. They recently started getting ODBC - 3146 errors from time to time when running some reports. From what I can tell, this is just a generic ODBC call failed error.
我的客户端使用Access作为SQL Server数据库的前端。他们最近在运行一些报告时不时开始收到ODBC-3146错误。据我所知,这只是一个通用的ODBC调用失败错误。
I've tried sticking some error handling in the VB script that is launching the reports, but I am not having any luck getting extra error information.
我已经尝试在启动报告的VB脚本中坚持一些错误处理,但我没有运气获得额外的错误信息。
Code looks a bit like this.
代码看起来有点像这样。
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
I've also enabled tracing on the ODBC side, but that has bogged things down way too much, and I am so far unable to recreate the ODBC error.
我还在ODBC端启用了跟踪,但这已经让事情陷入困境,我到目前为止无法重新创建ODBC错误。
I am completely open for suggestions on how to diagnose this.
我完全愿意接受有关如何诊断这一问题的建议。
1 个解决方案
#1
Use the DbEngine.Errors
collection.
使用DbEngine.Errors集合。
Sub Update_Temp()
On Error GoTo ErrorTrap
' Execute connect code at this point
Exit_errortrap:
Exit Sub
ErrorTrap:
Dim myerror As 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
To enable this code, make sure in VBA settings that error handling is turned on.
要启用此代码,请确保在VBA设置中启用了错误处理。
#1
Use the DbEngine.Errors
collection.
使用DbEngine.Errors集合。
Sub Update_Temp()
On Error GoTo ErrorTrap
' Execute connect code at this point
Exit_errortrap:
Exit Sub
ErrorTrap:
Dim myerror As 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
To enable this code, make sure in VBA settings that error handling is turned on.
要启用此代码,请确保在VBA设置中启用了错误处理。