Я перевожу нас с бэкэнда MS Access 2007 на бэкэнд SQL Server 2014.
Когда я пытаюсь выполнить сквозную вставку, я не получаю полное сообщение об ошибке SQL Server.
Dim qd As QueryDef
Dim rs As DAO.Recordset
On Error GoTo save_err
Set qd = CurrentDb.CreateQueryDef("")
qd.ReturnsRecords = False
If IsNull(Me.txtCategoryName) Then
MsgBox "enter a category name"
Else
qd.Connect = ConStringName
qd.sql = "INSERT INTO [Categories] (name) VALUES ('" & Text Field & "')"
qd.Execute
End If
В моем тестовом случае уникальное ограничение должно вызывать ошибку, что имя повторяется и не может быть вставлено. Вместо этого я просто получаю сообщение ODBC -- Call Failed.
Если вместо этого я попытаюсь создать сквозной запрос в реальном окне запроса, я получу полную ошибку.
Мой текущий обработчик ошибок - это окно сообщения:
MsgBox "FormName|SubName: " & Error$, vbCritical, "Error"
Если я переключу таблицу на связанную таблицу и попытаюсь вставить, ошибки не возникнет. Я хочу ошибку в этом случае.
Как получить полную ошибку в VBA?
WithEvents conn As ADODB.Connection
и обработатьconn_InfoMessage
и/илиconn_ExecuteComplete
, что даст вам объект параметраpError
, который должен содержать подробное сообщение об ошибке. Или вы можете перебрать коллекциюErrors
соединения. Я не вижу ничего похожего на просмотр членов библиотеки DAO в обозревателе объектов (F2). - person Mathieu Guindon   schedule 13.07.2017