2009-04-08 19 views
6

Mi cliente está utilizando Access como interfaz de una base de datos de SQL Server. Recientemente comenzaron a recibir errores ODBC - 3146 de vez en cuando al ejecutar algunos informes. Por lo que puedo decir, esto es solo un error genérico de llamada fallida ODBC.Determine la causa real de la falla de ODBC (error 3146) con ms-access?

He intentado controlar el error en el script de VB que está lanzando los informes, pero no estoy teniendo suerte obteniendo información de error adicional.

El código se parece un poco a esto.

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 

también he habilitado el seguimiento en el lado de ODBC, pero que ha estancado las cosas demasiado, y estoy hasta ahora incapaz de recrear el error de ODBC.

Estoy completamente abierto a sugerencias sobre cómo diagnosticar esto.

Respuesta

9

Usa la colección 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 

Para habilitar este código, asegúrese de que en la configuración de VBA esté activado el manejo de errores.

+0

Mi tipo de "Error" no tiene .Number o .Description - se supone que es diferente? – AnotherParker

+0

Supongo que su error probablemente no es un error 'dbEngine'. ¿Puedes proporcionar más detalles? Probablemente necesita su propia publicación. – Smandoli

Cuestiones relacionadas