За да получите повече информация за причината за „ODBC – неуспешно обаждане“. грешка, можем да преминем през DBEngine.Errors
колекция и вижте дали има други съобщения, които може да са малко по-описателни. Например с кода
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
може да видим следното в прозореца 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.
Разбира се
Разрешението EXECUTE беше отказано за обекта „SAMPLE_TEST“, база данни „myDb“, схема „dbo“.
е значително по-полезно от просто
ODBC – обаждането не бе успешно.