Я использую метод ДАО, Выполняются для удаления некоторых записей. Если это перестало работать, это ясно путем проверки RecordsAffected (это будет 0). Но действительно ли возможно получить сообщение об ошибке (например, зарегистрировать или показать пользователю)? У меня есть попытка удалить записи вручную в сетке Таблицы, я получаю четкое диалоговое сообщение, например, "Запись не может быть удалена или изменена, потому что таблица x включает связанные записи".
Включите опцию dbFailOnError с методом Execute, чтобы зафиксировать ваши ошибки DELETE. Без dbFailOnError ваш DELETE может потерпеть неудачу.
Использование RecordsAffected для указания ошибки DELETE может ввести в заблуждение. Например, если ваш DELETE включает «WHERE Sample = 5», и нет строки со значением Sample, равным 5, RecordsAffected будет иметь значение 0. Это не является ошибкой для механизма базы данных.
В следующем примере операция DELETE завершается неудачно, поскольку существует связь с принудительной ссылочной целостностью между tblParent и tblChild. Таким образом, в окне сообщения написано: «Запись не может быть удалена или изменена, потому что таблица tblChild включает связанные записи».
Public Sub DeleteFailure()
Dim strSql As String
Dim strMsg As String
Dim db As DAO.Database
On Error GoTo ErrorHandler
strSql = "DELETE FROM tblParent WHERE id = 1;"
Set db = CurrentDb
db.Execute strSql, dbFailOnError
ExitHere:
On Error GoTo 0
Debug.Print "RecordsAffected: " & db.RecordsAffected
Set db = Nothing
Exit Sub
ErrorHandler:
strMsg = "Error " & Err.Number & " (" & Err.Description _
& ") in procedure DeleteFailure"
MsgBox strMsg
GoTo ExitHere
End Sub
Обновление : это переработанный ErrorHandler для учета нескольких ошибок, вызванных операцией DAO.
ErrorHandler:
Dim errLoop As Error
Debug.Print "Errors.Count: " & Errors.Count
For Each errLoop In Errors
With errLoop
strMsg = "Error " & Err.Number & " (" & _
Err.Description & _
") in procedure DeleteFailure"
End With
MsgBox strMsg
Next
Set errLoop = Nothing
GoTo ExitHere
Должна быть возможность использовать ошибки DBEngine: http://msdn.microsoft.com/en-us/library/bb177491(office.12).aspx