Access 2002. Самоучитель
Шрифт:
Итак, вы умеете бороться с дублированием записей двумя способами (один из них был описан в главе 11). Мы рекомендуем иметь в своем арсенале оба. Отметим лишь, что последний вариант удобнее при вводе записей словарного типа, где определяющим является одно поле (в данном случае – поле Название фирмы). В принципе ничего невозможного нет, и нетрудно усовершенствовать программу настолько, чтобы она позволяла контролировать несколько полей. Но подобное усложнение процедуры вряд ли оправдано, тем более что для такого случая есть другой вариант отсева
Установка на последнюю запись при открытии формы
В главе 11 уже упоминалось о том, что при активизации форма открывается на последней, еще пустой записи, чтобы пользователь не тратил время на поиски и мог сразу вводить новую информацию. Теперь рассмотрим программный механизм, который позволяет реализовать эту установку. В качестве примера возьмем ту же форму Фирмы.
Подготовка процедуры
По сути данная процедура представляет собой просто фрагмент предыдущей программы. Фокус передается новой записи, затем максимальное значение увеличивается на единицу и присваивается этой новой записи.
Как и в предыдущем примере, начните с окна свойств. Но теперь вам понадобится таблица свойств не какого-то отдельного поля, а всей формы в целом. Открыв форму Фирмы в режиме конструктора, щелкните по кнопке
Она расположена в левом верхнем углу формы, непосредственно под названием Фирмы: Form (см. рис. 12.13). На фоне окна конструктора откроется окно таблицы свойств формы. Активизируйте опцию Открыть. Щелкните в этом поле мышью и воспользуйтесь стрелкой прокрутки. В выпадающем списке выберите позицию Обработка событий и включите ее в поле Открыть. Если теперь вы щелкнете по кнопке
то в окне модуля будут выведены операторы, обрамляющие процедуру (см. рис. 12.6): Private Sub Form_Open (Cancel As Integer) и End Sub.
Рис. 12.13
Отметим, что само по себе окно модуля не содержит новой информации, необходимой читателю. Поэтому в дальнейшем мы не станем включать в главу рисунки, которые явно избыточны. Обсуждаться будет только текст программы. Однако не забывайте, что она формируется в окне модуля. Следующий стандартный шаг – установка операторов обработки ошибок. После этого заготовка программы принимает такой вид:
Private Sub Form_Open(Cancel As Integer)
On Error GoTo Err_Form_Open
. . . . . . . . . . .
Err_Form_Open:
MsgBox Err.Description
Resume Exit_Form_Open
End SubТеперь определите переменную Cod, которая необходима для выполнения процедуры:
Dim Cod As Integer
После этого введите содержательные операторы:
DoCmd.RunMacro «Макрос1»
Cod = DMax(«[Код Фирмы]», «Фирмы») + 1
Forms![Фирмы]![Код фирмы] = [Cod]
DoCmd.RunMacro «Макрос14»
Exit_Form_Open:
Exit SubКоманда Макрос1 задает переход к новой записи, а Макрос14 устанавливает курсор в следующем поле, куда должна вводиться информация. Приведем полный текст процедуры:
Private Sub Form_Open(Cancel As Integer)
On Error GoTo Err_Form_Open
Dim Cod As Integer
DoCmd.RunMacro «Макрос1»
Cod = DMax(«[Код Фирмы]», «Фирмы») + 1
Forms![Фиpмы]![Koд фирмы] = [Cod]
DoCmd.RunMacro «Макрос14»
Exit_Form_Open:
Exit Sub
Err_Form_Open:
MsgBox Err.Description
Resume Exit_Form_Open
End SubЕсли
Удаление записи с установкой на последнюю запись
В каждой форме базы данных Контрольно-измерительные приборы созданы две дополнительные кнопки: Изменить запись и Удалить запись (см. рис. 12.15).
Рис. 12.15
В этом разделе будет рассмотрена процедура, на которой основано действие кнопки Удалить запись.
В принципе удаление записи – совершенно рутинная операция. Она выполняется штатными средствами Access и не заслуживает особого внимания. Если в нашем случае для нее предусмотрена специальная кнопка, то лишь потому, что есть и вторая часть задачи – установка на последнюю запись. Это значит, что в программу следует добавить некоторые новые функции, чтобы показать новые возможности при использовании процедуры. Покажем это на примере формы Назначение. Как и во всех предыдущих случаях, выполнение процедуры привязано к событию Щелкнуть по кнопке в таблице свойств кнопки Командная кнопка – см. рис. 12.16. Далее следует выбрать опцию Удалить запись.
Как и раньше, с помощью кнопки
откройте окно модуля. Оно выглядит так же, как аналогичное окно, показанное на рис. 12.6. Процедура опять будет формироваться в окне модуля, но и на сей раз речь пойдет только о текстовых операторах.
Первые этапы работы уже хорошо вам знакомы: автоматическая вставка обрамляющих операторов, ввод операторов обработки ошибок и определение переменной Cod. Вот результат ваших трудов:Private Sub Удалить_запись_Click
On Error GoTo Err_Назначение_Удалить_запись_Click
Dim Cod As Integer
…………………… Err_Назначение_Удалить_запись_Click:
MsgBox Err.Description
Resume Exit_Назначение_Удалить_запись_Click
End SubДалее вы блокируете вывод любых информационных сообщений, кроме сообщений об ошибках. Эту функцию выполняет программа МакросЗ (см. рис. 12.17). Чтобы запустить ее, выполните команду Установить сообщение, но в поле Аргументы команды укажите значение Нет, что и позволит блокировать вывод сообщений. Данная опция используется, когда пользователь не хочет, чтобы выполнение макроса прерывалось ради появления окон предупреждений. Однако сообщения об ошибках выводятся в любом случае. Кроме того, Microsoft Access выводит на экран все диалоговые окна, которые требуют от пользователя действий более сложных, чем щелчок по кнопке: например, когда надо ввести какой-либо текст или выбрать параметр из списка.