2009-04-08 22 views
6

Ứng dụng khách của tôi đang sử dụng Access làm giao diện người dùng cho cơ sở dữ liệu SQL Server. Gần đây, họ bắt đầu nhận ODBC - 3146 lỗi khi chạy một số báo cáo. Từ những gì tôi có thể nói, đây chỉ là một lỗi ODBC gọi chung không thành công.Xác định nguyên nhân thực sự của lỗi ODBC (lỗi 3146) với truy cập ms?

Tôi đã thử dán một số lỗi xử lý trong tập lệnh VB đang khởi chạy báo cáo, nhưng tôi không có bất kỳ may mắn nào nhận được thông tin lỗi bổ sung.

Mã trông hơi giống thế này.

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 

Tôi cũng đã cho phép truy tìm ở phía ODBC, nhưng điều đó đã sa lầy điều xuống đường quá nhiều, và tôi cho đến nay không có khả năng tái tạo các lỗi ODBC.

Tôi hoàn toàn mở cho các đề xuất về cách chẩn đoán điều này.

Trả lời

9

Sử dụng bộ sưu tập 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 

Để bật mã này, hãy đảm bảo trong cài đặt VBA xử lý lỗi được bật.

+0

Loại "Lỗi" của tôi không có .Number hoặc .Description - có phải là điều gì đó khác biệt không? – AnotherParker

+0

Tôi cho rằng lỗi của bạn có thể không phải là lỗi 'dbEngine'. Bạn có thể cung cấp thêm chi tiết nào không? Có lẽ cần bài của riêng mình. – Smandoli

Các vấn đề liên quan