- •1. Операторы, процедуры, типы данных vba
- •Основные типы данных в vba
- •Преобразование типов данных
- •Is (оператор)
- •Функция IsArray
- •IsArray (Имя переменной)
- •IsDate (функция)
- •IsEmpty (функция)
- •IsError( функция)
- •IsMissing(функция)
- •IsNull (функция)
- •IsNumeric (функция)
- •IsNumeric(выражение)
- •IsObject(функция)
- •2. Работа с объектами
- •3. Применение процедур vba
- •Модель программирования в Access
- •Типы процедур
- •Поле со списком
- •Вызов процедур
- •Запуск процедур-функций
- •Запуск процедур-подпрограмм
- •4. Операторы vba
- •Логические операторы Логические операторы
- •Некоторые функции в vba
- •5. Объявление переменных, констант в vba
- •Создание пользовательских типов данных
- •Dim c As клиент
- •Cоздание массивов постоянной длины
- •Cоздание массива из списка значений
- •Создание динамических массивов
- •6.Организация ввода-вывода данных с помощью функций InputBox и MsgBox
- •7. Управляющие структуры
- •Структура If … Then
- •Структура If … Then … Else
- •Вторая группа операторов]
- •Второй блок операторов]
- •Алгоритм
- •Переход по метке
- •10: Программный код Cтруктура Select Case
- •8. Циклы в vba Cтруктура For ….Next
- •Операторы
- •Структура For Each … Next
- •Структура Do… Loop
- •Структура Do While … Loop
- •Структура Do ….While Loop
- •Cтруктуры Do Until … Loop и Do … Loop Until
- •9. Операторы Exit
- •Функции для работы со строковыми переменными
- •11. Классические задачи программирования: сортировка, поиск
- •If IsNull(массив(X)) Then Exit Function
- •12. Управление базами данных
- •Основные понятия базы данных
- •Установка значений свойств
- •Считывание свойств
- •Вызов методов
- •Объект.Метод
- •Присваивание значений возвращаемых из методов
- •13. Объект Database –база данных
- •Cвойства объекта Database
- •Методы объекта Database
- •14. Объект TableDef
- •Свойства объекта TableDef
- •Методы объекта TableDef
- •Использование свойства Fields объекта TableDef
- •Использование свойства TableDefs объекта Database
- •15. Объект Form –экранная форма Свойства объекта Form
- •Применение некоторых свойств oбъекта Form Свойство Me
- •Cвойство ActiveControl
- •Свойство CurrentRecord
- •Свойство Visible
- •Свойства OrderBy и OrderByOn
- •Методы объекта Form
- •Список и поле со списком
- •Глава 16. Объект DoCmd и его методы
- •Глава 17. Объект Recordset
- •Свойства объекта Recordset
- •Свойства bof и eof
- •Создание объекта Recordset
- •Глава 18. Применение объекта Debug
- •Глава 19. Применение свойства RecordCount
- •Применение свойства Fields
- •Применение метода GetRows объекта Recordset
- •Глава 21. Объекты QueryDef
- •Свойства объектов QueryDef
- •Использование метода Execute
- •Глава 22. Применение языка sql
- •Использование выражения select
- •Простые формы select
- •Фильтрация данных с помощью предложения where
- •Сортировка данных
- •Объединение таблиц
- •Глава 23. Объект Report События
- •Некоторые свойства объекта Report
- •Методы объекта Report
- •Применение свойств объекта Report
- •Глава 24. Настройка пользовательского интерфейса
- •Глава 25. Создание и изменение панелей команд
- •Глава 26. Создание и удаление контекстных меню
- •Приложение
- •Этапы реализации задачи:
- •If IsNull(.Fields!цена) Then Exit Do
3. Применение процедур vba
В программировании на языке Access VBA объектами можно управлять двумя способами. Первый — это управление объектом из программы, внешней по отношению к объекту. В Access VBA такие внешние программы определяются как методы специального объекта Access VBA с именем DoCmd. Методы DoCmd аналогичны макродействиям в макропрограммировании.
Схема действия объекта DoCmd
Методы Объект
DoCmd Действует
на объект Свойства Методы
Второй способ управления объектами в Access VBA — это так называемый объектный подход, позволяющий работать непосредственно с объектом и его внутренними программами. Для задания или изменения свойства объекта можно использовать оператор присваивания, а также выполнять собственные методы объекта.
Эти методы представляют собой набор из более чем 100 заранее определенных действий, встроенных в Access в качестве внутренних составных частей его объектов. В VВА объект можно понимать как совокупность его свойств и методов: свойства определяют, что представляет собой объект, а методы - что этот объект может делать.
Объект
Установка или Свойства Методы Выполнение
изменение свойств метода
Можно писать процедуры VBA, ориентированные на операцию выбора. Такие процедуры должны либо выделять объект, либо распознавать активный объект.
Модель программирования в Access
В Access применяется модель программирования, основанная на событиях. Пишется процедура, которую Access будет выполнять в тот момент, когда в определённом объекте произойдёт определённое событие, и эта программа связывается со свойством события в этом объекте. Программа запускается после наступления данного события.
Типы процедур
В языке программирования VBA имеются процедуры трёх типов: процедуры-функции или просто функции, процедуры-подпрограммы или просто подпрограммы и процедуры обработки свойств.
Процедура-функция может выполнять определённое действие и возвращать одиночное значение, которое вычисляется в функции и присваивается имени функции в одном из операторов внутри неё.
Синтаксис
[ Область Function имя_функции [( список аргументов as тип
видимости] с указанием типа данных)] возвращаемого
значения
[операторы]
[имя_функции=выражение]
End Function
Пример
Написать функцию, которая вычисляет площадь треугольника по формуле Герона.
Function площадь(сторона1 As Single, сторона2 As Single, сторона3 As Single) As Single
Dim p As Single, s As Single
p = сторона1 + сторона2 + сторона3
s = Sqr(p * (p - сторона1) * (p - сторона2) * (p - сторона3))
площадь = s
End Function
Процедуры-функции можно применять также для обработки событий. При наступлении события Access автоматически запускает процедуру-обработчик и отбрасывает возвращаемое функцией значение.
Процедура-подпрограмма выполняет определённое действие, но не
возвращает значения. Как правило подпрограммы применяются для обра-
ботки событий.
Синтаксис
Sub имя_подпрограммы[(список аргументов с указанием типа данных)]
[операторы]
End Sub
Процедуры-подпрограммы, которые обрабатывают события, называются процедурой обработки события или обработчиком события. Они подчиняются ряду правил, в том числе правилам именования.
Например, обработчик события в форме или отчёте должен иметь имя Form_имя_события или Report_имя_события. Эти имена, обычно, устанавливаются автоматически при выборе события.
Процедура обработки свойства создаёт пользовательское свойство объекта. Как правило, каждое пользовательское свойство реализуется парой процедур обработки свойств, одна из которых устанавливает значение свойство, а другая возвращает его значение. Процедура обработки свойства, устанавливающая его значение, начинается с оператора Property Let, если присваивается значение, или с оператора Property Set. если присваивается указатель на объект. Эти процедуры не возвращают значений. Процедуры, возвращающие значения свойств, начинаются с оператора Property Get. Все эти процедуры заканчиваются оператором End Property.
При создании процедур можно указать доступность процедуры для других модулей или область видимости процедуры. Cделать это можно с помощью ключевых слов Private и Public. По умолчанию, т.е. если не задана область видимости, процедуры считаются открытыми (Public). Такие процедуры можно вызывать из процедур, относящихся к другим модулям; закрытые процедуры (Private) доступны только для процедур содержащего её модуля.
В Access определены события для форм и отчетов, для разделов форм и отчетов, а также для элементов управления форм. Для таблиц, запросов и страниц доступа к данным события не определены.
Последовательности событий
Когда пользователь, процедура VBA или компьютер выполняет
какие-либо действия, последовательность событий распознается одним
или несколькими объектами. Приведем несколько примеров.
Щелчок кнопкой мыши
При щелчке левой кнопкой мыши на элементе управления в нем последовательно происходят три события:
MouseDown (Кнопка вниз) — при нажатии кнопки мыши.
MouseUp (Кнопка вверх) — при отпускании кнопки мыши.
Click (Нажатие кнопки) — после того, как левая кнопка мыши была нажата и отпущена.
События MouseDown и MouseUp регистрируются элементом управления независимо от того, какая кнопка мыши нажата;
Событие же Click - только при нажатии левой кнопки мыши.
Щелчок на кнопке
Если элемент управления может получать фокус, в только что рассмотренной ситуации распознается еще несколько событий. Например, щелчок левой кнопкой мыши на кнопке вызывает последовательность из пяти событий:
Enter (Вход) — до того, как кнопка фактически получит фокус от другого элемента управления той же формы, или если эта кнопка является первым элементом управления формы, который получает фокус при ее открытии.
GotFocus (Получение фокуса) — после того, как кнопка получила фокус.
MouseDown — при нажатии кнопки мыши.
MouseUp — при отпускании кнопки мыши.
Click — после того, как левая кнопка мыши была нажата и отпущена.
Изменение текста в поле или в поле со списком
Содержимое поля или поля со списком можно изменить с помощью клавиатуры. Не все клавиши вызывают передачу символа на экран (к таким клавишам относятся, например, клавиши Enter и Tab). В Windows символы, вводимые с клавиатуры и выводимые на экран, принадлежат набору символов ANSI. При нажатии клавиши, которой соответствует
символ из этого набора, символ появляется в поле. При попытке изменить
текст нажатием клавиши поле распознает четыре последовательных события:
KeyDown (Клавиша вниз) - при нажатии любой клавиши
KeyPress (Нажатие клавиш) - при нажатии клавиши, генерирующей символ
Change (Изменение) - если совершено изменение содержимого поля или текстовой части поля со списком
KeyUp (Клавиша вверх) - при отпускании любой клавиши
Поле
Если текст в поле был изменен с клавиатуры и затем пользователь попытался каким-либо способом обновить содержимое этого элемента управления, переходя к другому элементу управления формы, в поле происходят еще два события:
BeforeUpdate (До обновления) — когда Access обнаруживает изменение непосредственно перед помещением измененных данных в буфер записи
AfterUpdate (После обновления) — когда Access обнаруживает изменение значения в поле, сразу после помещения измененных данных в буфер записи.