Переменные используются для сохранения значений величин, изменяющихся в процессе выполнения программы. Каждая переменная имеет имя по которому к ней обращаются. Правила присвоения имен аналогично правилу присвоения имен для полей. Присвоение значения для переменной осуществляется посредством оператора присваивания. В левой части оператора присваивания имя переменной, а в правой - значение или выражение.
Переменные могут создаваться автоматически, по мере появления в процедуре (неявное объявление). По умолчанию неявно объявленные переменные имеют тип Variant. Внутри такой переменной кроме значения хранится индикатор типа значения.
Неявное объявление типа допустимо только в случае отсутствия оператора Option Explicit в области описания модуля. Чтобы при создании нового модуля предотвратить появление этого оператора в области описания, следует отключить опцию явное описание переменных на вкладке Модуль диалогового окна Параметры.
Рекомендуется описывать все переменные явно, это позволит избежать ошибок, связанных с преобразованием типов данных. Явное описание типа производится оператором Dim, после которого указывается имя переменной и ее тип. Если при явном объявлении переменной не указан тип данных, а задано только имя переменной то будет создана переменная типа Variant, которой можно присваивать цепочки символов, числа с плавающей точкой, значения даты и времени. ACCESS 97 однозначно идентифицирует присваиваемые значения, поскольку наряду с ними он хранит в переменной и признак типа.
В ACCESS используются следующие типы данных:
Тип данных | Хранимые значения | Область значений |
Boolean | Логическая величина | True или False |
Byte | Целое положительное число | От 0 до 255 |
Integer | Целое число | От -32768 до 32768 |
Long | Целое число двойной длины | От -2147483648 до 2147483648 |
Single | Число с плавающей точкой | От -3,402823Е38 до -1,401298Е-45 и от 1,401298Е-45 до 3,402823Е38 |
Double | Число с плавающей точкой двойной точности | От -1,79769313486232Е308 до -4,94065645841247Е-32 и от 4,94065645841247Е-324 до 1,79769313486232Е308 |
Currency | Число с фиксированной точкой (используется для проведения денежных расчетов) | От -922337203685477,5808 до 922337203685477,5807 |
Date | Дата | От 1 января 100 года до 31 декабря 9999 года |
String (фиксированной длины) | Строковое значение | Длина от 1 до 65536 |
String (переменной длины) | Строковое значение | Длина от 0 до 2147483648 |
Для объявления нескольких переменных можно пользоваться одним оператором Dim, перечисляя их через запятую.
При объявлении переменной следует помнить об области действия. Переменные объявленные в процедуре, можно использовать только внутри этой процедуры. Если переменная должна быть доступна во всех процедурах одного модуля, ее необходимо объявить в области описания модуля. Здесь также можно применять оператор Dim. Наибольшую область действия имеет переменная, объявленная глобальной (с префиксом Global) в области описания модуля. Синтаксис оператора Global не отличается от синтаксиса оператора Dim.
В отличие от переменной, константа содержит фиксированное значение, которое не может быть изменено в процессе выполнения программы. Согласно правилам хорошего тона, константы, как и переменные, следует объявлять явно, указывая их имена и значения. Для объявления константы используется оператор Const. Объявленную константу можно использовать в программе, обращаясь к ней по имени. Например:
Const Число_Пи = 3.1415926
Условные операторы
В языке VBA, как и в других языках программирования, основными элементами, управляющими ходом выполнения процедуры, являются условные операторы. Наиболее простой из них - оператор If... Then:
If Полина = "Ж" Then
Поздравление = "С 8 марта!"
End if
Если условие, заданное выражением между ключевыми словами If и Then выполняется, соблюдаются инструкции внутри блока, ограниченного ключевыми словами Then и End if. Иначе операторы между ключевыми словами не выполняются, а ACCESS перейдет к обработке оператора, который следует за ключевыми слова End if. В случае необходимости произвести два различных действия (одно при соблюдении условия, а второе - нет), надлежит воспользоаться полной формой оператора If:
If выражение Then
Оператор1
Else
Оператор2
End if
Если условие соблюдается, выполняется Оператор1 (или группа операторов, расположенных между ключевыми словами Then и Else, а если не соблюдается - Оператор2 (или группа операторов, расположенных между ключевыми словами Else и End if.
Однако, не всегда возможны два варианта решения. Учитывая это, VBA предоставляет в распоряжение пользователей оператор Select Case, предназначенный для выбора одного из множеств вариантов решений:
Select Case Город
Case "Киев"
Код_МГТС = "044"
Case "Москва"
Код_МГТС = "095"
Case "Запорожье"
Код_МГТС = "061-2"
Case Else
Print "Я не знаю такого города!"
End Select
При выполнении этого оператора проверяется значение переменной Город. В зависимости от результата проверки переменной Код_МГТС присваивается телефонной код некоторого города. Если значение переменной Город не совпадает ни с одним из значений, перечисленных в строках с ключевым словом Case, производится действие, указанной между ключевыми словами Case Else и End Select.
Операторы цикла
Цикл используется для многократного повторения одной или нескольких инструкций. Количество повторений цикла связано с некоторым условием. В VBA предусмотрено несколько разновидностей циклов. Простейшим примером циклической конструкции является так называемый цикл по счетчику.
For Счетчик = 1 To 10
Print Счетчик
Next Счетчик
Цикл по счетчику ограничивается ключевыми словами For и Next. После ключевого слова For указывается имя переменной, которая будет выполнять роль счетчика, после знака равенства - начальное значение счетчика, а после ключевого слова To - конечное значение счетчика.
Еще одна разновидность цикла - While-цикл. Условие выполнения команд внутри такого цикла определяется некоторым условным оператором:
Do While Счетчик <> 10
Loop
Разновидностью цикла Do является Until-цикл, который выполняется, пока условное выражение ложно:
Do Until Счетчик=10
Счетчик=Счетчик+1
Loop
6. Приложение
6.1. Типы данных.
Для того чтобы обеспечить возможность хранения в базе данных разнообразной информации, Access предлагает большой набор типов данных:
Таблица 1
Название типа | Назначение |
Текстовый | Текст длиной до 255 символов |
Поле МЕМО | Текст длиной до 65000 символов |
Числовой | Числа различных форматов |
Дата/время | Дата и/или время |
Денежный | Денежные значения различных форматов |
Счетчик | Счетчик, который автоматически увеличивается на единицу с добавлением каждой новой записи |
Логический | Величины, способные принимать только два значения: да/нет |
Поле объекта OLE | Поля, позволяющие вставлять рисунки, звуки и данные других типов |
Гиперссылка | Ссылки, дающие возможность открывать объект Access(таблицу, форму, запрос и т.д.), файл другого приложения или web-страницу |
6.2. Виды запросов действия
Таблица 2
Тип | Описание | |
Выбор | Выполняет отбор записей из базы данных и показывает их. | |
Обновление | Обновляет данные в существующей таблице. | |
Объединение | Запрос в режиме SQL | |
Создание таблицы | Выполняет отбор записей из базы данных и сохраняет их как новую таблицу. | |
Перекрестный | Выполняет сведение данных по двум наборам значений, один из которых отображается в левой части таблицы, а другой – в верхней ее части. | |
Запрос к серверу | SQL запрос на сервер | |
Добавление | Добавляет данные в существующую таблицу | |
Удаление | Удаляет данные, соответствующие указанному условию из указанной таблицы. | |
Управление |
6.3. Виды запросов SQL
Таблица 3
Инструкция | Описание | Синтаксис |
ADD USER | Добавляет одного или нескольких существующих пользователей в существующую группу. | ADD USER пользователь [, пользователь, …] TO группа |
CREATE USER | Служат для созданияновых пользователей. | CREATE USER пользователь пароль личный_код [, пользователь пароль личный_код, …] |
CREATE GROUP | Служат для создания новых групп. | CREATE GROUP группа личный_код [, группа личный_код, …] |
DROP USER | Удаление одного или нескольких пользователей или удаление пользователей из группы | DROP USER пользователь [, пользователь, …] [FROM группа ] |
DROP GROUP | Удаление одной или нескольких групп | DROP GROUP группа [, группа, …] |
SELECT... INTO | Создает запрос на создание таблицы (Запрос на создание таблицы. Запрос (инструкция SQL), создающий новую таблицу, в которую копируются записи (строки) из существующей таблицы.). | SELECT поле1 [, поле2 [,...]] INTO новая_таблица [IN внешняя_база_данных ] FROM источник |
DELETE | Создает запрос на удаление, который удаляет записи из одной или нескольких таблиц, перечисленных в выражении FROM и удовлетворяющих условию предложения WHERE. | DELETE [ таблица. *] FROM таблица WHERE условие_отбора |
TRANSFORM | Создает перекрестный запрос. | TRANSFORM статистическая_функцияинструкция_SELECT PIVOT поле_сводной_таблицы [IN (значение1 [, значение2 [,...]])] |
6.4. Элементы управления форм
При открытии конструктора форм на экране появляется панель элементов. С помощью кнопок панели элементов в форму можно добавлять различные объекты, типы которых перечислены в таблице.
Таблица 4
Название элемента | Назначение | |
Поле | Используется для ввода и отображения информации полей таблиц и запросов, а также для вывода результатов вычислений | |
Подпись | Подписи создаются автоматически вместе с элементами типа текстовое поле, поле со списком и т. п. Они разъясняют смысл поля ввода. Дополнительные надписи могут использоваться для заголовков и пояснений | |
Кнопка | Щелчок на такой кнопке выполняет команду, с помощью которой можно перейти в другую форму, переместиться по записям и выполнить многие другие операции | |
Поле со списком | Разрешает как непосредственный ввод значения в поле, так и его выбор в раскрывающемся списке предопределенных значений | |
Список | Позволяет выбирать данные из набора пунктов и не разрешает непосредственный ввод значений | |
Подчиненная форма/отчет | Вставляет в форму (или отчет) область с другой формой (или отчетом), связанной с главной | |
Линия | Добавляет прямую линию | |
Прямоугольник | Рисует прозрачный или непрозрачный прямоугольник с цветной границей любой толщины | |
Присоединенная рамка объекта | Объект OLE, связанный с полем данных таблицы или запроса | |
Группа переключателей | Группа переключателей ссылается на некоторое поле таблицы. Каждый переключатель группы соответствует определенному целочисленному значению этого поля | |
Флажок | Предназначен для представления полей типа да/нет. Отмеченный квадратик соответствует величине «да», а пустой — «нет» | |
Переключатель | Элемент группы переключателей, в которой может быть отмечен только один из них (его кружок выглядит зачерненным) | |
Выключатель | Позволяет вводить информацию типа да/нет. Величине «да» или «истина» соответствует утопленное положение выключателя | |
Вкладка | Позволяет разместить на одном и том же пространстве экрана несколько наборов элементов управления. Удобен в тех случаях, когда элементы легко разделяются на логические группы | |
Вставить диаграмму | ||
Свободная рамка объекта | Объект OLE, не связанный ни с каким источником данных | |
Рисунок | Рисунок любого графического формата с рамкой | |
Разрыв страниц | Линия, по которой формируется перевод страницы при выводе формы или отчета на принтер | |
Вставить гиперссылку | Создание ссылки на Web-страницу, рисунок, адрес электронной почты или программу | |
Вложение | Присоединенные файлы |