Теперь проверим, как работает написанная процедура. Откройте форму Фирмы и введите в поле Название фирмы имя организации, которое заведомо содержится в базе данных, например ORION (см. рис. 12.9).

Рис. 12.9

Не заполняйте остальные поля: в данном случае важно просто проверить, дееспособна ли созданная программа. Чтобы ввести информацию в базу данных, щелкните по клавише Enter. Появится сообщение, показанное на рис. 12.10. Форма остается в том же состоянии, код новой записи не изменился, и все готово к вводу другой новой записи.

Рис. 12.10

Добавьте ее, задав в качестве имени фирмы уникальное имя ORION1. Снова воспользуйтесь клавишей Enter для ввода записи. В результате появится другое сообщение (см. рис. 12.11). Как видите, добавление этой записи база данных «восприняла» совершенно нормально (рис. 12.12).

Рис. 12.11

Рис. 12.12

Итак, вы умеете бороться с дублированием записей двумя способами (один из них был описан в главе 11). Мы рекомендуем иметь в своем арсенале оба. Отметим лишь, что последний вариант удобнее при вводе записей словарного типа, где определяющим является одно поле (в данном случае – поле Название фирмы). В принципе ничего невозможного нет, и нетрудно усовершенствовать программу настолько, чтобы она позволяла контролировать несколько полей. Но подобное усложнение процедуры вряд ли оправдано, тем более что для такого случая есть другой вариант отсева дублирующихся записей.

<p>Установка на последнюю запись при открытии формы</p>

В главе 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.14). Ее код уже установлен, а курсор находится в поле Название фирмы. Таким образом, форма готова к вводу новой информации. (Не будь написанной и выполненной процедуры, форма открылась бы на первой записи.)

Рис. 12.14

Перейти на страницу:

Похожие книги