2009-04-08 8 views
6

Mein Client verwendet Access als Front-End für eine SQL Server-Datenbank. Sie haben vor kurzem begonnen, gelegentlich ODBC-3146-Fehler zu erhalten, wenn Sie einige Berichte ausführen. Von dem, was ich sagen kann, ist dies nur ein generischer ODBC-Aufruf Fehler fehlgeschlagen.Ermitteln Sie die Ursache des ODBC-Fehlers (Fehler 3146) mit ms-access?

Ich habe versucht, einige Fehlerbehandlung im VB-Skript, das die Berichte startet, zu haften, aber ich habe kein Glück, zusätzliche Fehlerinformationen zu erhalten.

Code sieht ein bisschen so aus.

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 

Ich habe aktiviert auch auf der ODBC-Seite verfolgt, aber das hat die Dinge nach unten zu viel festgefahren, und ich bin so weit nicht in der Lage, die ODBC-Fehler zu erstellen.

Ich bin völlig offen für Vorschläge zur Diagnose.

Antwort

9

Verwenden Sie die DbEngine.Errors Sammlung.

Um diesen Code zu aktivieren, stellen Sie in den VBA-Einstellungen sicher, dass die Fehlerbehandlung aktiviert ist.

+0

Mein "Error" -Typ hat keine .Number oder .Description - soll etwas anders sein? – AnotherParker

+0

Ich nehme an, dass Ihr Fehler wahrscheinlich kein 'dbEngine' Fehler ist. Können Sie mehr Details angeben? Wahrscheinlich braucht es einen eigenen Beitrag. – Smandoli

Verwandte Themen