5. Значение вычисленного кода присваивается полю Код фирмыновой записи. В этой инструкции также необходимо соблюдать правила, касающиеся употребления квадратных скобок и восклицательных знаков.
6. Запускается макрос14, который передает фокус следующему полю – Название фирмы.
7. Заканчивается логическая конструкция If.
Проверка завершенной процедуры
На этом написание процедуры завершено. Вот ее полный текст:
Private Sub Название_фирмы_LostFocus()
On Error GoTo Err Название_фирмы_LostFocus_Click
Dim Cod As Integer
Dim answer As Integer
answer = DCount(«[Haзвaниe фирмы]», «Фирмы», «[Название фирмы] = Forms![Фирмы]![Haзвaниe фирмы]»)
If answer = 1 Then
MsgBox Prompt:="Значение уже содержится в файле и повторно не вводится"
DoCmd.RunMacro «Макрос32»
Else
DoCmd.RunMacro «Макрос2»
DoCmd.RunMacro «Макрос1»
MsgBox Prompt:="Запись введена"
Cod = DMax(«[Kод фирмы]», «Фирмы») + 1
Forms![Фирмы]![Kод фирмы] = [Cod]
DoCmd.RunMacro «Макрос14»
End If
DoCmd.DoMenuItem acFormBar, acRecordsMenu, 5, acMenuVer70
Exit Название_фирмы_LostFocus_Click:
Exit Sub
Err Название_фирмы_LostFocus_Click:
MsgBox Err.Description
Resume Exit Название_фирмы_LostFocus_Click
End Sub
Программа создавалась в окне модуля. За недостатком места мы не иллюстрировали выполнение каждого этапа работы после ввода очередного оператора. Покажем только, как выглядит в окне модуля завершенная процедура (см. рис. 12.8).
Рис. 12.8
Теперь проверим, как работает написанная процедура. Откройте форму Фирмыи введите в поле Название фирмыимя организации, которое заведомо содержится в базе данных, например ORION(см. рис. 12.9).
Рис. 12.9
Не заполняйте остальные поля: в данном случае важно просто проверить, дееспособна ли созданная программа. Чтобы ввести информацию в базу данных, щелкните по клавише Enter.Появится сообщение, показанное на рис. 12.10. Форма остается в том же состоянии, код новой записи не изменился, и все готово к вводу другой новой записи.
Рис. 12.10
Добавьте ее, задав в качестве имени фирмы уникальное имя ORION1.Снова воспользуйтесь клавишей Enterдля ввода записи. В результате появится другое сообщение (см. рис. 12.11). Как видите, добавление этой записи база данных «восприняла» совершенно нормально (рис. 12.12).
Рис. 12.11
Рис. 12.12
Итак, вы умеете бороться с дублированием записей двумя способами (один из них был описан в главе 11). Мы рекомендуем иметь в своем арсенале оба. Отметим лишь, что последний вариант удобнее при вводе записей словарного типа, где определяющим является одно поле (в данном случае – поле Название фирмы).В принципе ничего невозможного нет, и нетрудно усовершенствовать программу настолько, чтобы она позволяла контролировать несколько полей. Но подобное усложнение процедуры вряд ли оправдано, тем более что для такого случая есть другой вариант отсева дублирующихся записей.
Установка на последнюю запись при открытии формы
В главе 11 уже упоминалось о том, что при активизации форма открывается на последней, еще пустой записи, чтобы пользователь не тратил время на поиски и мог сразу вводить новую информацию. Теперь рассмотрим программный механизм, который позволяет реализовать эту установку. В качестве примера возьмем ту же форму Фирмы.
Подготовка процедуры
По сути данная процедура представляет собой просто фрагмент предыдущей программы. Фокус передается новой записи, затем максимальное значение увеличивается на единицу и присваивается этой новой записи.
Как и в предыдущем примере, начните с окна свойств. Но теперь вам понадобится таблица свойств не какого-то отдельного поля, а всей формы в целом. Открыв форму Фирмыв режиме конструктора, щелкните по кнопке
Она расположена в левом верхнем углу формы, непосредственно под названием Фирмы: Form(см. рис. 12.13). На фоне окна конструктора откроется окно таблицы свойств формы. Активизируйте опцию Открыть.Щелкните в этом поле мышью и воспользуйтесь стрелкой прокрутки. В выпадающем списке выберите позицию Обработка событийи включите ее в поле Открыть.Если теперь вы щелкнете по кнопке
то в окне модуля будут выведены операторы, обрамляющие процедуру (см. рис. 12.6): Private Sub Form_Open (Cancel As Integer) и End Sub.
Рис. 12.13
Отметим, что само по себе окно модуля не содержит новой информации, необходимой читателю. Поэтому в дальнейшем мы не станем включать в главу рисунки, которые явно избыточны. Обсуждаться будет только текст программы. Однако не забывайте, что она формируется в окне модуля. Следующий стандартный шаг – установка операторов обработки ошибок. После этого заготовка программы принимает такой вид:
Читать дальше
Конец ознакомительного отрывка
Купить книгу