Resume Exit_Название_фирмы_LostFocus_Click Выход из процедуры Включая в создаваемую программу процедуру обработки ошибок, необходимо предусмотреть такой путь выхода из нее, чтобы впоследствии обработчик активизировался только при возникновении ошибки. Процедура выхода отмечается меткой строки точно так же, как и процедура обработки ошибок. Если ошибки не произойдет, то после выполнения программы запустится процедура выхода. Если же ошибка случится, то сначала выполнится обработчик ошибок, а затем управление будет передано в процедуру выхода. Она содержит инструкцию Exit:
Exit Название_фирмы_LostFocus_Click
Итоговый синтаксис программы обработки ошибок выведен в окне модуля (см. рис. 12.7).
Теперь перейдем к созданию самой программы с помощью VBA – как вы помните, такова была наша изначальная цель.
Функция создаваемой программы
Прежде всего зададимся вопросом, зачем нужна создаваемая процедура.
Когда мы включаем новую запись в форму Фирмы, то должны проверить, не дублирует ли содержимое поля Название_фирмы_ те одноименные поля, которые уже введены в форму в предшествующих записях. Тестирование заключается в следующем. Для каждой новой вводимой записи подсчитывается количество совпадений поля Название_фирмы_ с таким же полем для уже введенных записей. Если это число равно 1, то программа извещает пользователя о наличии дубликата, обнуляет поля текущей записи и ждет ввода очередной. Если количество совпадений равно 0, то процедура:
1. Вводит значение в базу данных.
2. Сообщает об этом пользователю.
3. Устанавливает следующее значение кода фирмы (в поле Код фирмы предусмотрена последовательная нумерация).
4. Переходит к новой записи.
5. Активизирует поле Название фирмы.
Теперь форма готова к вводу новой записи. Если процедура, которая построена описанным выше образом, будет запущена одновременно с вводом первой записи, то число совпадений может равняться либо нулю, либо единице; других вариантов нет.
Программная реализация Для работы процедуры нужны две переменные. Одна будет указывать на количество совпадений (дублирующихся записей), другая – сохранять код текущей записи. Назовите их соответственно answer и Cod. Первое, что вы должны сделать, – определить обе переменные как целые числа. Используйте для этого операторы:Dim Cod As Integer Dim answer As Integer
Теперь определите выражение, которое формирует количественное значение переменной answer. Выражение будет иметь такую структуру:
answer = DCount(«[Haзвание фирмы]», «Фирмы», «[Название фирмы] = Forms![Фирмы]![Название фирмы]»)
Здесь необходимы пояснения. Функция DCount Функция DCount возвращает число записей в заданном наборе (подмножестве) записей. Ее синтаксис таков:
DCount(вырaжeниe, набор[, условие])