Форма при обработке ошибок

Я пытаюсь улучшить свой код обработки ошибок.

Использование Access (2007) VBA:

Когда в формах возникает ошибка обработчика On Error, переменная DataErr дает мне код ошибки, но у меня нет доступа к объекту Err.

Доступ к объекту Err позволяет мне проанализировать описание ошибки и предоставить пользователю подробное пользовательское сообщение (например, код ошибки 3314, какое именно поле вызывает ошибку)

Как получить доступ к объекту Err из обработчика OnError формы? Не только код ошибки

Примечание. Я могу получить доступ к объекту Err из кода, прикрепленного к кнопкам «сохранить» и «удалить» в моей форме, и дать настраиваемые сообщения о дублирующихся ключах, отсутствующих обязательных полях, связанных записях, которые нельзя удалить, и т. д.

Это отлично работает, если пользователь нажимает эту кнопку. Но если пользователь решает выбрать следующую или предыдущую строку, что вызывает сохранение, мой код не вызывается, и пользователю отображается стандартное сообщение об ошибке MS Access.


person user1256949    schedule 08.03.2012    source источник
comment
Ошибки формы — это не то же самое, что ошибки VBA или DAO, насколько я знаю: msdn.microsoft. com/en-us/library/ff836345.aspx   -  person Fionnuala    schedule 08.03.2012
comment
@Remou Отличный ответ, жаль, что это комментарий, иначе я бы проголосовал.   -  person Matt Donnan    schedule 08.03.2012
comment
@Мэтт, спасибо, но это было так коротко и в основном по ссылке, поэтому я подумал, что это противоречит правилам ответов.   -  person Fionnuala    schedule 08.03.2012


Ответы (1)


"если пользователь решит выбрать следующую или предыдущую строку, что приведет к сохранению, мой код не будет вызван, и пользователю будет показано стандартное сообщение об ошибке MS Access"

Используйте события формы «Перед обновлением» и «Перед вставкой» для проверки текущих значений. Если какие-либо из них неприемлемы, вы можете присвоить True параметру Cancel процедуры и уведомить пользователя о недопустимых значениях.

person HansUp    schedule 08.03.2012