Чтение онлайн

на главную

Жанры

Access 2002. Самоучитель
Шрифт:

cod = 1: answer = 4

Если инструкция на одной строке не помещается, она может быть продолжена на следующей. В таком случае в начале второй строки ставятся символы пробела и подчеркивания.

Выражения приравнивают значения объекта слева от знака равенства значению, полученному из элементов справа.

При указании имен процедур, констант, переменных и аргументов VBA рекомендуется использовать стандартные правила Access:

• первый символ должен быть буквой;

• имя может содержать буквы, цифры и символ подчеркивания, но знаки препинания не допускаются;

• имя может содержать не более 255 знаков;

• не следует использовать одинаковые имена для функций VBA, методов или инструкций;

• не следует использовать одно имя дважды в одной процедуре.

Процедуры Sub

Процедура Sub содержит одну или более определенных операций. Можно использовать процедуру Sub для автоматизации повторно выполняемых задач: например, назначить одну из процедур элементу меню, чтобы запускать ее именно оттуда.

Процедуры Sub

полезны для операций, выполняемых при щелчке по кнопке, имеющейся в форме, или получении фокуса определенным элементом управления.

Инструкция Sub определяет имя процедуры, аргументы и операторы программы и имеет следующий синтаксис:

[Private|Public] [Static]Sub name [ (arglist) ]

[инструкции]

[Exit Sub]

[инструкции]

End Sub

Это синтаксическое определение является стандартным. Жирным шрифтом выделены слова, которые должны вводиться в точном соответствии с примером. Слова, набранные курсивом, – это имена, определяемые пользователем. Слова, стоящие в квадратных скобках, являются необязательными. Ключевые слова, разделенные вертикальной чертой (|), представляют собой взаимоисключающие параметры, поэтому можно использовать лишь одно из двух – либо Private, либо Public. Если в процедуру Sub включается список аргументов (arglist), то он должен быть заключен в скобки, а аргументы – разделены запятыми.

Если в определении указано два или более ключевых слов, разделенных вертикальными чертами и при этом заключенных в фигурные скобки, то одно из них должно быть введено обязательно, иначе будет выбран параметр по умолчанию.

Ключевое слово Sub описывает процедуру по имени. Все инструкции, которые находятся между строками Sub и End Sub, выполняются при запуске процедуры.

Функции Процедура Function генерирует значение и возвращает его в приложение. Возвращаемое значение имеет то же имя, что и функция, и может быть использовано в любом месте выражения. Синтаксис инструкции Function выглядит следующим образом:

[Private | Public][Static]Function имя [(arglist)] [As тип]

[инструкции]

[имя = выражение]

[Exit Function]

[инструкции]

[имя = выражение]

End Function

Значение, которое возвращает функция, присваивается ее имени. Если функция не присваивает значения, то она возвращает значение по умолчанию: 0 в случае числовой функции, строку нулевой длины в случае строковой функции или Empty в случае функции Variant.

Чтобы использовать значение, возвращаемое функцией, надо поместить ее имя справа от знака равенства в другой процедуре.

Элементы процедур

Оба типа процедур совместно используют одни и те же элементы синтаксиса, которые поясняются в табл. 12.2.

Список аргументов должен иметь определенную структуру и синтаксис, которые также применимы к обоим типам процедур:

[Optional] [ByVal] [ByRef] [ParamArray] varname[ ] [As type] [=defaultvalue]

Таблица 12.2

Элементы списка поясняются в табл. 12.3. Таблица 12.3

Просмотр объектов

Как вы уже знаете, число объектов, с которыми имеет дело проектировщик баз данных Access 2002 и приложений, достаточно велико – здесь не только собственно таблицы, формы и отчеты. К объектам надо отнести еще константы, процедуры, функции и т. п. К тому же, кроме собственной библиотеки Access 2002, есть еще библиотека VBA, библиотека DAO (Data Access Objects – объекты доступа к данным) и др. Поэтому без какой-то систематизации этого множества объектов обойтись довольно трудно.

Access 2002 предоставляет пользователю инструмент такой систематизации – Просмотр объектов. Окно просмотра объектов вызывается щелчком по кнопке

расположенной на панели инструментов. Но эта кнопка доступна лишь из окна программы (см. рис. 12.1 или 12.2).

Окно просмотра объектов, показанное на рис. 12.3, встраивается в правую область окна модуля. Его допускается переместить, чтобы оно не мешало обзору программы. В левом верхнем поле этого окна стрелкой прокрутки вы можете выбрать нужную вам библиотеку объектов – библиотеку VBA, DAO, Access 2002, собственную библиотеку базы данных, в которой вы работаете, или вообще все библиотеки. (На рис. 12.3 показано, что установлено отображение объектов из библиотеки VBA.) Далее на вкладке Классы вам надо выбрать интересующий вас класс объектов (на рисунке это Дата и время). Тогда в правом поле откроется список Члены класса Дата и время, где вы можете выбрать нужную функцию, свойство, константу и др. Для выбранного объекта (например, на рисунке справа выбрана функция DateSerial) в нижней части окна показан соответствующий ему синтаксис и повторены (другим цветом) название библиотеки и имя класса. Если вы щелкнете по выделенному цветом имени библиотеки, то оно сменится ее адресом (путем). Выбранный объект можно перенести непосредственно в текст программы: скопировать его имя в буфер и оттуда вставить в нужное место текста. Однако помните, что при этой операции переносится только имя объекта без аргументов – их придется вводить вручную.

Рис. 12.3

Управление выполнением программы

Наряду с рассмотренными выше элементами важным компонентом VBA являются элементы управления выполнением программы. Кроме операторов, которые вызывают подпрограммы или функции, таких основных элементов четыре:

• выход из программы или временная остановка ее выполнения;

• переход к другой части программы;

• организация циклов;

• выбор действий, которые должны производиться дальше.

В табл. 12.4 указаны ключевые операторы, которые позволяют управлять выполнением программы. Все они имеют определенный стандартный синтаксис. Вот несколько примеров.

1. Синтаксис инструкции On… GoSub:

On expression GoSub

Здесь expression – целое или округленное до целого число в диапазоне от 0 до 255, а destinationlist – список номеров строк или меток. Каждая из них соответствует значению, принимаемому выражением. 2. Синтаксис инструкции Do… Loop:

Do [(While|Until) condition]

[инструкции1]

[Exit Do]

[инструкции2]

Loop

Здесь condition – условие цикла; инструкции1 – операторы, которые многократно выполняются до тех пор, пока истинно условие цикла; инструкций – операторы, выполняющиеся, если условие цикла ложно. 3. Синтаксис инструкции If.Then.Else:

If [условия]

Then [условные операторы]

[Else операторы else]

End If

Для выполнения этой инструкции необходимо наличие хотя бы одного условия. Если условия истинны, выполняются условные операторы; в противном случае – операторы else. Инструкция должна заканчиваться строкой End If. Таблица 12.4

Программирование приложений с помощью VBA

Что может делать пользователь с помощью VBA? Ответ очень прост: все. К сожалению, ни в одной книге нельзя рассмотреть все вероятные сферы программирования, в которых вы найдете применение возможностям VBA. Поэтому ограничимся тем, что нас непосредственно интересует, – созданием БД.

Когда мы формируем новую базу данных, то хотим сделать ее удобной для пользователей. Однако у каждого из них свои взгляды на эти удобства, и нередко сервис базы данных приходится дорабатывать. Примеры, которыми мы будем иллюстрировать использование VBA, взяты именно из этой области.

Практическая логика подсказывает: если какую-то задачу можно решить штатными средствами Access 2002 (стандартные запросы, макросы), то так и следует поступить. Обращение к VBA оправдано тогда, когда средства, заложенные в Access, либо не позволяют добиться нужного результата, либо предлагают сложное и громоздкое решение.

Предупреждение дублирования записей при вводе их из формы

В главе 11 мы обсуждали вопрос об очистке базы данных от повторяющихся записей, которые попали в таблицы, и выяснили, что этот механизм может работать и в профилактическом режиме, предотвращая попадание дубликатов при вводе записей.

А теперь покажем, как решить ту же задачу средствами VBA.

Сначала решим, как будет запускаться создаваемая нами программа. Очевидно, что проверка на наличие дубликатов должна проводиться не только для определенного поля, но и для комбинации полей. Естественно, тестирование начинается с того момента, когда в проверяемое поле вводится какая-либо информация, иначе просто нечего тестировать. Следовательно, надо «привязать» создаваемую программу к какому-либо свойству проверяемого поля. Например, возьмем поле Название фирмы. Откройте окно его свойств, где есть несколько подходящих для нашей цели параметров: После обновления, Нажать клавишу, Изменение, Потеря фокуса и др. Выберите свойство Потеря фокуса и щелкните по строке, которая ему соответствует. Теперь активизируйте кнопку

Откроется окно Построитель. В нем вы можете выбрать один из трех вариантов обработки свойства (см. рис. 12.4):

• построитель выражений;

• построитель макросов;

• построитель программ.

Рис. 12.4

О построителе выражений мы поговорим несколько позже; построитель макросов – это конструктор, уже рассмотренный в предыдущей главе. Наконец, построитель программ открывает окно модуля, которое было выведено на рис. 12.2, хотя и содержало другую информацию. Чтобы начать создание процедуры, выберите именно эту третью опцию. Тогда в окне свойств поля Название_фирмы_ установится режим Процедура обработки событий, как показано на рис. 12.5, и откроется окно модуля (см. рис. 12.6). Оно примечательно следующим.

Рис. 12.5

Поделиться:
Популярные книги

Идеальный мир для Лекаря 7

Сапфир Олег
7. Лекарь
Фантастика:
юмористическая фантастика
попаданцы
аниме
5.00
рейтинг книги
Идеальный мир для Лекаря 7

Враг из прошлого тысячелетия

Еслер Андрей
4. Соприкосновение миров
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Враг из прошлого тысячелетия

Кодекс Охотника. Книга XII

Винокуров Юрий
12. Кодекс Охотника
Фантастика:
боевая фантастика
городское фэнтези
аниме
7.50
рейтинг книги
Кодекс Охотника. Книга XII

Жестокая свадьба

Тоцка Тала
Любовные романы:
современные любовные романы
4.87
рейтинг книги
Жестокая свадьба

Идеальный мир для Социопата 4

Сапфир Олег
4. Социопат
Фантастика:
боевая фантастика
6.82
рейтинг книги
Идеальный мир для Социопата 4

Возмездие

Злобин Михаил
4. О чем молчат могилы
Фантастика:
фэнтези
7.47
рейтинг книги
Возмездие

Попаданка в академии драконов 4

Свадьбина Любовь
4. Попаданка в академии драконов
Любовные романы:
любовно-фантастические романы
7.47
рейтинг книги
Попаданка в академии драконов 4

(Не)свободные, или Фиктивная жена драконьего военачальника

Найт Алекс
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
(Не)свободные, или Фиктивная жена драконьего военачальника

Убийца

Бубела Олег Николаевич
3. Совсем не герой
Фантастика:
фэнтези
попаданцы
9.26
рейтинг книги
Убийца

Книга пяти колец. Том 2

Зайцев Константин
2. Книга пяти колец
Фантастика:
фэнтези
боевая фантастика
5.00
рейтинг книги
Книга пяти колец. Том 2

Вечная Война. Книга VII

Винокуров Юрий
7. Вечная Война
Фантастика:
юмористическая фантастика
космическая фантастика
5.75
рейтинг книги
Вечная Война. Книга VII

Возвышение Меркурия. Книга 2

Кронос Александр
2. Меркурий
Фантастика:
фэнтези
5.00
рейтинг книги
Возвышение Меркурия. Книга 2

Матабар. II

Клеванский Кирилл Сергеевич
2. Матабар
Фантастика:
фэнтези
5.00
рейтинг книги
Матабар. II

Месть Паладина

Юллем Евгений
5. Псевдоним `Испанец`
Фантастика:
фэнтези
попаданцы
аниме
7.00
рейтинг книги
Месть Паладина