- •Лабораторная работа № 5.
- •Задание
- •Основные сведения Основные понятия Visual Basic для приложений
- •Модули форм и отчетов
- •Объекты базы данных в vba
- •Объект Recordset
- •Ссылки на библиотеки объектов
- •События
- •Соглашения по синтаксису
- •Ссылки на формы, отчеты, их свойства и элементы управления
- •Ссылки на подчиненные формы и отчеты
- •Использование функции dLookup
- •Внутренние константы
- •Технология работы Создание процедуры для проверки правильности вводимой даты
- •Создать функцию для автоматического установления скидки.
- •Создать процедуры для контроля количества товаров
- •Создать процедуру для добавления записи в таблицу
- •Создать процедуру для удаления записи из таблицы
- •Создание процедуры поиска заказчика из Омска
- •MsgBox "Нет клиентов из Омска!"
- •Создать функцию для копирования цены из поля таблицы в поле формы
- •Создание процедуры подсчета числа заказов на определенную дату
- •Создание процедуры возврата в окно базы данных
- •Создание процедуры обработки события отсутствия в списке
- •Создать процедуры обработки событий для отбора данных при открытии отчета
- •Содержание отчета
Соглашения по синтаксису
Область определения переменной (или константы) определяет, известна ли она только одной процедуре, всем процедурам в модуле или всем процедурам в базе данных. Для объявления общей переменной используйте инструкцию Public в разделе описаний модуля. Чтобы переменную можно было использовать во всех процедурах некоторого модуля, объявите ее в разделе описаний стандартного модуля или модуля формы или отчета. Переменная или константа, описанная в процедуре, доступна только в этой процедуре.
Инструкция Const используется для объявления констант.
[Public / Private]Const{имя константы [As тип данных]=<константное выражение>}
Инструкция Dim используется для объявления переменной или массива переменных.
Dim [WithEvents ] {имя переменной [([<индекс>],…)] [As [New] тип данных]},…
где <индекс> есть [нижняя граница То] верхняя граница.
Ключевое слово New указывает, то объявляемая объектная переменная является новым экземпляром объекта. Ключевое слово WithEvents применяется в модуле класса для указания объектной переменной, использующейся при отклике на события, генерируемые объектом ActiveX.
Для объявления переменной как объекта типа Database введите
Dim mydb As Database
Следующая инструкция описывает массив, содержащий строки фиксированной длины по 20 символов, причем 50 элементов массива пронумерованы от 51 до 100
Dim mymassiv (51 To 100) As String * 20
Инструкция Set используется для присваивания значения объектной переменной.
Set имя переменной = ссылка на объект
Чтобы создать переменную, ссылающуюся на текущую базу данных, введите
Dim mydb As Database
Set mydb = CurrentDb()
Чтобы создать переменную, ссылающуюся на таблицу Клиенты в текущей базе данных, используя только что определенную переменную mydb, введите
Dim myTab As TableDef
Set myTab = mydb![Клиенты]
Чтобы создать переменную, ссылающуюся на поле Название таблицы Клиенты, введите
Dim myPole As Field
Set myPole = myTab![Название]
Ссылки на формы, отчеты, их свойства и элементы управления
Ссылки на формы или отчеты можно делать только когда они открыты. Access использует коллекции Forms и Reports (множества открытых форм и отчетов), чтобы сохранить путь, из которого открываются соответствующие формы и отчеты. Коллекцию необходимо указывать, т. к. Access позволяет использовать одно и то же имя для формы и для отчета. Объекты Form и Report имеют свойства. Пример ссылки на свойство Источник записей формы Товары :
Forms![Товары].RecordSourсe
Чтобы установить значение свойства формы в собственном модуле класса формы, используйте идентификатор Me – ссылку на самого себя :
Me. RecordSourсe
Чтобы сослаться на элемент управления Код товара формы Товары, введите :
Forms![Товары]![КодТовара]
Ссылки на подчиненные формы и отчеты
Ссылка на подчиненную форму Заказанный товар в форме Заказы будет иметь вид :
Forms![Заказы]![Заказанный товар]
Для ссылки на свойство Вывод на экран рассмотренной выше подчиненной формы введите выражение :
Forms![Заказы]![Заказанный товар].Visible
Для ссылки на элемент управления Код товара подчиненной формы Заказанный товар, внедренной в форму Заказы, будет иметь вид :
Forms![Заказы]![Заказанный товар].Form![Код товара]
Функции и подпрограммы
В VBA имеется два типа процедур : функции (процедуры Function) и подпрограммы (процедуры Sub). Процедуры обоих типов могут иметь аргументы – переменные, с помощью которых передаются значения, определяющие работу процедуры при конкретном вызове. Функции можно выполнять из любого места в Access, в том числе из выражений в запросах, а подпрограмму можно выполнять только при вызове из функции, из другой подпрограммы или как процедуру обработки события в форме или отчете.
Объект DoCmd
Пользуясь методами объекта DoCmd, можно выполнять макрокоманды и команды меню в процедурах VBA. К наиболее употребляемым макрокомандам, которые выполняются из среды VBA, относятся :ApplyFilter (Применить фильтр), Close (Закрыть), FindNext (Следующая запись), FindRecord (Найти запись), Maximize (Развернуть), Minimize (Свернуть), OpenForm (Открыть форму), OpenQuery (Открыть запрос), OpenReport (Открыть отчет) и др.
Например, чтобы открыть форму Клиент для ввода данных в режиме формы, введите :
DoCmd.OpenForm “Клиент”, acNormal , , , acAdd
Закрыть форму Клиент можно с помощью инструкции:
DoCmd. Close acForm, “Клиент”
Аргументы в процедурах
Иногда имена форм и отчетов в процедурах удобно заменять строковыми переменными. Например, существует кнопочная форма, из которой вызываются другие формы. Для вызова форм используется одна повторяющаяся процедура, в которую через аргументы передаются имена форм.
Стандартный модуль в этом случае выглядит:
Public Function Открыть(strFormName As String) As Integer
Screen.ActiveForm.Visible=False
DoCmd.OpenForm strFormName
End Sub
Объект Screen ссылается на конкретную форму, отчет или элемент управления. Применяя объект Screen, можно ссылаться на активный объект, не зная его имени.
Можно заменить объект Screen объектом Me, если приведенная выше процедура используется только в одной форме (Ме.Visible=False).
При вызове этой процедуры в свойстве события Нажатие кнопки нужно ввести имя процедуры с именем конкретной формы : = Открыть(“Заказы”).