Pour obtenir plus d'informations sur la cause d'un "échec de l'appel ODBC". erreur, nous pouvons parcourir le DBEngine.Errors
collection et voyez s'il y a d'autres messages qui pourraient être un peu plus descriptifs. Par exemple, avec le code
qdf.Connect = strConnectionString
qdf.SQL = " EXEC [dbo].[SAMPLE_TEST]"
qdf.ReturnsRecords = True
On Error GoTo oops
Set rst = qdf.OpenRecordset
Debug.Print rst!RecordCount
rst.Close
Set rst = Nothing
Exit Sub
oops:
Dim dbeError As Error
For Each dbeError In DBEngine.Errors
Debug.Print "(" & dbeError.Number & "): " & dbeError.Description
Next
End Sub
nous pourrions voir ce qui suit dans la fenêtre VBA Immediate :
(229): [Microsoft][ODBC SQL Server Driver][SQL Server]The EXECUTE permission was denied on the object 'SAMPLE_TEST', database 'myDb', schema 'dbo'.
(3146): ODBC--call failed.
Certainement
L'autorisation EXECUTE a été refusée sur l'objet 'SAMPLE_TEST', base de données 'myDb', schéma 'dbo'.
est considérablement plus utile que simplement
ODBC :échec de l'appel.