LEADERSOFT.ru Разработка на заказ программ и сайтов
Форумы по информационным технологиям
 
Регистрация  |  Вход
left
Форумы Минимизировать
ПоискСписок форумов
  Программирование  Microsoft Access. Файлы mdb и accdb  Обработка ошибо...
 Обработка ошибок при вводе одинаковых записей
 
 19.03.2008 13:14:07
Nensi
24 сообщения


Обработка ошибок при вводе одинаковых записей
Добавление данных в таблицу осуществляется с помощью кнопок на форме: добавить и сохранить. Записи должны быть уникальны.

Код, который прописан на кнопку "добавить":
DoCmd.GoToRecord , , acNewRec

Код, который прописан на кнопку "сохранить":
DoCmd.RunCommand acCmdSaveRecord

При вводе записей ,которые уже существуют в таблице, при нажатии на кнопку "сохранить" выскакивает ошибка: "Error 3022 изменения не были внесены из-за....".

Подскажите, как сделать так, чтобы вместо этого сообщения выскакивало сообщение об ошибке для пользователя: "Вы вводите данные, которые уже есть в таблице-тоесть дублируете их" и предлогало ввести более корретктные данные.

Добавление в модуль формы события обработки ошибки:
Private Sub Form_Error(DataErr As Integer, Response As Integer)
' Обработка ошибобк механизма Jet
Select Case DataErr
Case 3022
' Ввод данных некорректного типа
MsgBox "Сохранение записи невозможно" & _
"так как введенная вами запись уже существует в базе данных. Введите новые данные или для отмены нажмите " & _
"клавишу <Esc>.", vbInformation
' Отмена стандартного сообщения об ошибке
Response = acDataErrContinue
Case Else
' Все остальные ошибки мы поручаем
' обрабатывать приложению Access
Response = acDataErrDisplay
End Select
End Sub

не срабатывает.
 20.03.2008 12:36:03
Admin1
731 сообщения
1-ый


Re: Обработка ошибок при вводе одинаковых записей

1. Лучше ошибку обрабатывать через OnError. Это стандартный способ перехвата ошибки. Пример дан в этом файле: http://shops.leadersoft.ru/Product.aspx?ProductID=8718

2. Желательно записи перед добавлением проверять на ввод правильной информации. Например, через dlookup. Это будет лучше, так как на обработку ошибок у Access уходит больше времени.

 24.03.2008 17:53:26
Nensi
24 сообщения


Re: Обработка ошибок при вводе одинаковых записей

Спасибо за пример, с проверкой ввода данных я разобралась, а вот с обработкой произвольной ошибки нет.

Если прописать на кнопку сохранения записи:

On Error GoTo 999

Dim Response As Integer
999:
    MsgBox "Ошибка при добавлении: такая запись уже существует" & vbNewLine
   ' Отмена стандартного сообщения об ошибке
      Response = acDataErrContinue
      Err.Clear 'Очищаем поток от ошибок
     DoCmd.RunCommand acCmdSaveRecord

то следом за окном с сообщением "Ошибка при добавлении: такая запись уже существует" всеравно выскакивает стандартное сообщение об ошибке. Его можно хотя бы скрыть или запретить вывод на экран? И как это выполнить?

Спасибо.
  

 

 25.03.2008 15:41:21
Admin1
731 сообщения
1-ый


Re: Обработка ошибок при вводе одинаковых записей

Эти строчки лишние

Response = acDataErrContinue
DoCmd.RunCommand acCmdSaveRecord

 25.03.2008 18:25:03
Nensi
24 сообщения


Re: Обработка ошибок при вводе одинаковых записей

 Admin1написал

Эти строчки лишние

Response = acDataErrContinue
DoCmd.RunCommand acCmdSaveRecord

Как это строчка "DoCmd.RunCommand acCmdSaveRecord" может быть лишняя, если по нажатию на кнопку форма открывается в режиме добавления?

 

  Программирование  Microsoft Access. Файлы mdb и accdb  Обработка ошибо...
ПоискПоиск  Список форумовСписок форумов  
right