Программирование на VBA в СУБД MS Access
VBA (Visual Basic for Application) играет важную роль при разработке баз данных MS Access. С помощью VBA в MS Access можно настроить формы и отчеты, запустить макросы, извлечь данные и т.д.
Модули VBA
VBA может использоваться для выполнения любых действий в ходе работы приложения. Для создания процедур VBA в MS Access используется Построитель программ. Программный код создается в Окне модуля. В зависимости от технологии создания можно различить несколько типов модулей:
1. Стандартный модуль. Для его открытия нужно распахнуть список Макрос, расположенный в группе Другие вкладки Создание ленты инструментов, и нажать кнопку Модуль.
2. Модуль формы или отчета. Для открытия модуля формы или отчета нужно открыть форму или отчет в режиме Конструктора и выбрать кнопку Просмотреть код в группе Сервис контекстного меню Инструменты конструктора форм/отчетов - Конструктор ленты инструментов. MS Access позволяет открыть одновременно и форму/отчет и ее модуль. Модули формы/отчета сохраняются одновременно с формой/отчетом и не перечисляются во вкладке Модули области переходов.
3. Независимый модуль класса. Открывается щелчком мыши по кнопке Модуль класса, появляющейся в распахивающемся списке кнопки Макрос, расположенной в группе Другие вкладки Создание ленты инструментов. После сохранения такого модуля его имя будет находиться на вкладке Модули области переходов вместе со стандартными модулями. Для обозначения стандартных модулей и независимых модулей VBA используются разные пиктограммы (рис. 10.8):
рис. 10.8. Отображение стандартных модулей и модулей классов на вкладке Модули области переходов |
Элементы языка VBA
Коды программы VBA состоят из выражений (statements). В каждой строке кода располагается одно отдельное выражение. Но данное правило имеет исключения:
· несколько выражений могут быть расположены в одной строке и разделены двоеточием;
· использование символа продолжения строки (пробел, за которым следует символ подчеркивания) позволяет создавать выражение, занимающее несколько строк. Не допускается использовать символ продолжения строки только внутри заключенных в кавычки строк. Рекомендуется продолжение каждой строки выделять отступом.
Алфавит языка VBA составляют следующие элементы:
· прописные и строчные буквы латинского алфавита (А – Z);
· прописные и строчные буквы кириллицы (А – Я);
· цифры от 0 до 9;
· символ подчеркивания «_»;
· специальные символы.
При написании кода VBA следует знать некоторые соглашения, которых следует придерживаться, чтобы избежать ошибок выполнения кода. Первое соглашение – это соглашение по именам. В VBA именуются переменные, константы, процедуры, функции, объекты и т.д. Определим правила, которым следует следовать при выборе имен:
1. Длина имен не должна превышать 255 символов, но VBA учитывает только первые 31 символ от начала имени.
2. Имена должны начинаться с буквы и могут содержать комбинацию букв, цифр и символов.
3. Имена не должны совпадать со стандартными именами VBA.
4. Имена не должны включать точек, пробелов и следующих символов: ! @ # $ %. Символ пробела можно заменить символом подчеркивания _.
Регистр букв в именах не имеет значения. Например, имена PRICE, Price и price эквивалентны.
Типы данных языка VBA
В языке VBA типы данных делятся на простые (или базовые) и структурированные.
К простым типам относятся:
· целый (Byte, Integer, Long);
· вещественный (Single, Double, Currency, Decimal);
· логический (Boolean).
К стандартным структурированным типам относятся:
· дата;
· массив;
· строка;
· тип, определяемый пользователем.
Таким образом,VBA использует 12 встроенных типов данных, представленных в таблице 10.1.
Таблица 10.1.
Типы данных в VBA
Тип данных | Диапазон допустимых значений | Занимаемая память | |
Byte | Байт, целые числа без знака | От 0 до 255 | 1 байт |
Integer | Целые числа со знаком | От -32768 до 32767 | 2 байта |
Long | Целые числа двойной точности со знаком | От -231 до 231-1 | 4 байта |
Продолжение таблицы 10.1.
Тип данных | Диапазон допустимых значений | Занимаемая память | |
Single | Действительные числа одинарной точности | От -3,4Е38 до -1,4Е-45 – отрицательные числа; от 1,4Е-45 до 3,4Е38 – положительные числа | 4 байта |
Double | Действительные числа двойной точности | От -1,8Е308 до -4,9Е-324 – отрицательные числа; от 4,9Е-324 до 1,8Е308 – положительные числа | 8 байт |
Currency | Денежные значения | От -9,2Е14 до 9,2Е14 | 8 байт |
Decimal | Десятичные числа | 29 знаков – целые числа; 27 знаков после запятой – вещественные числа | 14 байт |
Boolean | Логический | True или False | 2 байта |
Date | Дата (ограничиваются справа и слева знаком #) | От 01.01.1000 до 31.12.9999 с составляющей времени от 0:00:00 до 23:59:59 | 8 байт |
String | Строковый | До 65400 символов – фиксированной длины; до 2 млрд. символов - переменной длины | 1 байт на каждый символ - для строк фиксированной длины; 10 байт + 1 байт на каждый символ - для строк переменной длины |
Object | Объект | Ссылка на объект, рисунок | 4 байта |
Variant | Вариант (используется по умолчанию) | Специальный тип, который может заменить любой другой | 16 байт для чисел, 22 байта + 1 байт на каждый символ для строк |
Переменные
Переменная – это поименованная область памяти, предназначенная для временного хранения данных. Содержимое переменной может быть изменено в процессе выполнения программы. Данные, хранимые в переменных, могут быть различного типа. Тип данных определяет тип переменной.
Для работы с переменными существует два важных понятия: область определения и время жизни переменной. Область определения переменной определяет, где можно использовать переменную. В VBA есть три уровня определения переменных:
· Уровень процедуры. Переменные используются только в процедуре, в которой они описаны.
· Уровень модуля. Переменные используются только в процедурах модуля, в которых они описаны, но не в других модулях проекта.
· Уровень проекта (общие переменные). Переменные используются во всех модулях и процедурах проекта.
Переменные уровня процедуры сохраняют свое значение лишь при выполнении процедуры, при выходе из процедуры значение переменной теряется. Если процедура вызывает другие процедуры, переменная сохраняет свое значение, пока не закончится выполнение и этих процедур.
Декларация переменной может быть явной или неявной. Для явного определения переменных существует два способа:
1. (Предпочтительный)
[Static [Private| Public] Dim ИмяПеременной1 [as Тип1]
Private (частный), Public (общий) – ключевые слова, определяющие область видимости переменной. Static (статический) - ключевое слово, которое определяет, сохраняет ли переменная свое значение при завершении блока программы и при выходе из него.
2. Указание типа с помощью суффикса.
В этом случае тип данных переменной определяется с помощью добавления в конец ее имени специального символа описания типа (таблица 10.2):
[Static [Private| Public] Dim ИмяПеременнойСуффикс
Таблица 10.2.