Để biết thêm thông tin về nguyên nhân của một "ODBC - cuộc gọi không thành công." lỗi mà chúng ta có thể lặp qua DBEngine.Errors
thu thập và xem liệu có thông báo nào khác có thể mô tả hơn một chút hay không. Ví dụ:với mã
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
chúng ta có thể thấy thông tin sau trong cửa sổ VBA ngay lập tức:
(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.
Chắc chắn
Quyền EXECUTE đã bị từ chối trên đối tượng 'SAMPLE_TEST', cơ sở dữ liệu 'myDb', giản đồ 'dbo'.
hữu ích hơn đáng kể so với chỉ
ODBC - cuộc gọi không thành công.