Инструкция Resume возвращает управление из обработчика ошибок в процедуру. Эту инструкцию следует включать в обработчик, если необходимо передать управление в определенную строку процедуры (см. ниже). Однако инструкция Resume не является обязательной: если она отсутствует, то процедура может завершиться, когда обработчик выполнит свои функции.
Есть три формы инструкции Resume:
• Resume или Resume 0 – возвращает управление строке, при выполнении которой произошла ошибка;
• Resume Next – возвращает управление той строке, которая непосредственно следует за строкой, вызвавшей ошибку;
• Resume метка – передает управление строке, которая задана в качестве значения аргумента метка. Он содержит номер строки или метку.
Инструкции Resume и Resume 0 обычно применяются, когда пользователю необходимо внести исправления. Например, система запросила имя таблицы для открытия, а вы ввели название несуществующего объекта. В таком случае запрос можно повторить и продолжить выполнение программы с инструкции, вызвавшей ошибку, внеся исправления.
Инструкция Resume Next используется для обработки ошибок внутри самого обработчика. При этом команда, которая вызвала ошибку, больше не будет выполняться, когда управление вернется в процедуру.
Наконец, для передачи управления в другую строку процедуры применяется последняя форма инструкции – Resume метка. Например, управление может передаваться процедуре выхода, описанной в следующем разделе. Обычно используется именно этот вид инструкции Resume, если нет каких-либо особых требований:
Resume Exit_Название_фирмы_LostFocus_Click Выход из процедурыВключая в создаваемую программу процедуру обработки ошибок, необходимо предусмотреть такой путь выхода из нее, чтобы впоследствии обработчик активизировался только при возникновении ошибки. Процедура выхода отмечается меткой строки точно так же, как и процедура обработки ошибок. Если ошибки не произойдет, то после выполнения программы запустится процедура выхода. Если же ошибка случится, то сначала выполнится обработчик ошибок, а затем управление будет передано в процедуру выхода. Она содержит инструкцию Exit:
Exit Название_фирмы_LostFocus_Click
Итоговый синтаксис программы обработки ошибок выведен в окне модуля (см. рис. 12.7).
Рис. 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, набор[, условие])
Здесь:
• выражение – определяет поле, для которого производится подсчет значений. Данный аргумент может задаваться строковым выражением, определяющим поле в таблице или запросе, или представлять выражение, задающее выполнение вычислений над данными, содержащимися в поле. Допускается использовать в аргументе выражение имя поля в таблице или элемента управления в форме, константы, а также имя встроенной или определяемой пользователем функции. Не допускается в аргументе выражение других статистических функций по подмножеству или статистических функций SQL;
Читать дальше
Конец ознакомительного отрывка
Купить книгу