- •Лабораторная работа № 5.
- •Задание
- •Основные сведения Основные понятия Visual Basic для приложений
- •Модули форм и отчетов
- •Объекты базы данных в vba
- •Объект Recordset
- •Ссылки на библиотеки объектов
- •События
- •Ссылки на формы, отчеты, их свойства и элементы управления
- •Ссылки на подчиненные формы и отчеты
- •Соглашения по синтаксису
- •Использование функции dLookup
- •Внутренние константы
- •Технология работы Создание процедуры для проверки правильности вводимой даты
- •Создать функцию для автоматического установления скидки.
- •Создать процедуры для контроля количества товаров
- •Создать процедуру для добавления записи в таблицу
- •Создать процедуру для удаления записи из таблицы
- •Создание процедуры поиска заказчика из Омска
- •MsgBox "Нет клиентов из Омска!"
- •Создать функцию для копирования цены из поля таблицы в поле формы
- •Создание процедуры подсчета числа заказов на определенную дату
- •Создание процедуры возврата в окно базы данных
- •Создание процедуры обработки события отсутствия в списке
- •Создать процедуры обработки событий для отбора данных при открытии отчета
- •Содержание отчета
Использование функции dLookup
Функция DLookup выполняет поиск информации в еще не открытых таблицах. Синтаксис:
DLookup("[Поля, которые нужно отобразить]","[Таблица представления]","<Критерий поиска>"),
где Таблица представления - таблица, в которой находятся искомые поля.
Критерий поиска имеет следующий формат :
"[Поле в таблице]" = '<Пример данных>' .
'<Пример данных>' обычно представляется в виде символьной константы. Если же данные являются полем в таблице, то необходимо использовать синтаксис "&[Поле в рассматриваемой таблице]&"
При вводе названий полей и критериев для функция DLookup() запрещено использовать пробелы. Эту функцию можно использовать в процедурах VBA и в запросах для отбора данных. Если поле таблицы является текстовым, то его нужно заключать в одинарные кавычки.
Внутренние константы
Помимо констант, которые поставляются вместе с Access, можно использовать любые константы из библиотек DAO и VBA. Внутренние константы всегда доступны. Имена внутренних констант имеют приставку из двух букв, указывающую на их принадлежность к библиотеке. Константы Access начинаются с букв ac, константы DAO - с букв db, а константы VBA - с букв vb. Например, константа dbOpenTable открывает таблицу.
Внутренние константы используются в качестве аргументов в операторах вида DoCmd.Команда.
Технология работы Создание процедуры для проверки правильности вводимой даты
Откройте форму Заказы в режиме конструктора.
Откройте свойства поля ДатаИсполнения.
Щелкните по кнопке справа от свойства До обновления и выберите Процедуру обработки событий.
Введите следующую процедуру, которая выводит сообщение о неверной дате,
Private Sub ДатаИсполнения_BeforeUpdate(Cancel As Integer)
If [ДатаИсполнения] < [ДатаРазмещения] Then
MsgBox "Дата исполнения не может быть раньше даты размещения"
Me![ДатаИсполнения].Undo
Cancel = True
End If
End Sub
С помощью метода Undo элемента управления происходит отмена изменения в поле и аргумент Cancel устанавливается равным True для отмены изменений в буфере записи.
Проверьте работу процедуры, перейдя в режим формы. Введите неверную дату и нажмите Enter.
Создать функцию для автоматического установления скидки.
Выберите вкладку Модули окна БД и нажмите Создать.
Введите следующий фрагмент текста программы:
Function Disc (intQuantity As Integer) As Single
Select Case intQuantity
Case Is >= 1000
Disc = 0.5
Case Is >= 500
Disc = 0.4
Case Is >= 100
Disc = 0.3
Case Is >= 50
Disc = 0.2
Case Is >= 10
Disc = 0.1
Case Else
Disc = 0
End Select
End Function
Выберите опцию меню Debug->Compile,
чтобы убедиться, что функция не содержит синтаксических ошибок.
Выберите опцию меню View->Immediate Window (Окно отладки).
5. В окне отладки введите ? Disc(), поставив в скобки конкретное количество.
Нажмите Enter и проверьте результат.
Сохраните модуль, помня, что его имя не должно совпадать с именем функции.
Откройте форму ЗаказанныйТовар в режиме конструктора.
Убедитесь, что в свойстве Имя поля Количество задано Количество.
В свойстве Данные поля Скидка напишите =Disc(NZ([Количество])).
Проверьте работу функции, перейдя в режим формы.
