
- •Информационные технологии (ит)
- •Введение
- •Создание одиночной таблицы
- •Контроль достоверности данных
- •Р оманов________ _._.
- •Сверочные таблицы
- •Импорт/экспорт данных
- •Сортировка и фильтрация данных
- •Запросы
- •Формуляры
- •Вставка Автоформа;
- •Вид Заголовок/примечание.
- •Вид Колонтитулы.
- •Вид Свойства
- •Специализированные формуляры
- •Формуляры для работы с графическими данными
- •Программирование процессов обработки информации на основе формуляров
- •Сложные формуляры
- •Лабораторная работа № 12 Отчеты
- •Введение
- •Лабораторная работа № 13 Совместное использование баз данных
- •Введение
- •Разработка структуры многотабличной бд
- •Методические указания
- •Б. Создать в среде субд Access бд таблицы, описывающие требуемую предметную область, определить в них ключи;
Программирование процессов обработки информации на основе формуляров
Цель работы: изучение и закрепление на практике основ программирования процессов обработки информации в среде СУБД Access на языке VBA.
Методические указания
Современные СУБД позволяют вводить в состав баз данных программные модули, которые повышают гибкость и эффективность накопления в таблицах, обработки и отображения информации. В СУБД Access программирование реализуется на языке VBA (Visual Basic for Application). Модули могут использоваться автономно (отсутствует связь с другими элементами БД), манипулировать элементами базы (таблицами, запросами и т.п.) или привязываться к событиям, генерируемым в процессе использования формуляра. В первых двух случаях проектирование модуля ведется посредством вкладки Модули окна БД.
В последнем случае необходимо связать модуль со свойствами всего формуляра или его конкретного поля. Оперирование формуляром (полем) порождает целый ряд событий, которые могут автоматически активизировать связанные с ними предварительно программные модули. Перечень этих событий можно увидеть на вкладке События окна Свойства. К событиям, связанным с конкретным полем, относятся:
- до обновления (имеется ввиду поле);
- после обновления;
- вход;
- выход и т.п (всего 17 событий).
А с формуляром в целом связано более 50 подобных событий.
Пример использования программного модуля. Пусть имеется таблица поставок товара, в которой существуют поля: Дата поставки товара (Дпт) и Дата оплаты товара (Дот). По условию оплата всегда производится только после поставки, т.е. должно выполняться условие Дот > Дпт. Реализовать проверку этого условия стандартными средствами СУБД (см. лабораторную работу № 2) невозможно. Проблему можно решить, связав с событием После обновления поля Дот формуляра Товары следующий программный модуль:
Private Sub Дот_AfterUpdate()
If Forms!Товары!Дот < Forms!Товары!Дпт Then
MsgBox "Оплата проведена ранее получения товара"
Forms!Товары!Дот = Forms!Товары!Дпт
End If
End Sub
Все модули базы создаются как подпрограммы (Sub). СУБД автоматически именует подпрограмму, связывая имя поля с типом события (Дот_AfterUpda-te()).VBA является объектно-ориентированным языком. Запись вида Forms!Това-ры!Дот представляет обращение к конкретному значению конкретного свойства некоторого объекта БД (в данном случае к значению, которое находится в поле Дот формуляра Товары).
Р
ассматриваемый
модуль анализирует значения дат в полях
Дпт
и Дот.
Если требуемое условие не соблюдается,
то на экран выводится модульное окно с
сообщением (рис. 10.1). Для этого в состав
модуля введен оператор MsgBox
"Оплата проведена ранее получения
товара".
Дальнейшая работа с формуляром возможна
только после нажатия кнопки ОК.
Подпрограмма изменит введенное значение
даты оплаты на дату получения товара
(Forms!Товары!Дот = Forms!Товары!Дпт)
и на этом закончит свою работу. Если вместо данной строки ввести команду
Forms!Товары! Дот.SetFocus,
то изменение значения поля Дот не произойдет, но курсор его не покинет, т.е. подпрограмма не сможет завершить свою работу до ввода корректного значения даты оплаты.
В модулях можно вводить переменные на основе следующих объявлений:
Dim S As String {переменная S строкового типа},
Dim T As Double (или Decimal, Currency) {переменная T вещественного типа},
Dim I As Integer (или Byte, Long, Single) {переменная I целого типа},
Dim R As Boolean {переменная R логического типа},
Dim D As Date {переменная D типа даты}.
Арифметические операторы VBA: ^ (возведение в степень), * (умножение), / (вещественное деление), \ (целочисленное деление), Mod (взятие остатка), + (сложение), - (вычитание). Операторы сравнения: <, <=, >, >=, =, <>. Логические операторы: And (И), Eqv(эквивалентность), Imp(импликация), Not(НЕ), Or(ИЛИ), Xor (исключающее ИЛИ).
Операторы условий:
If <условие> then <операторы> end if
или
If <условие> then <операторы> else <операторы> end if
Средства VBA позволяют менять программно различные параметры формуляра. Изменение цвета текста в некотором поле задается командой
Forms!<название формуляра>!<название поля>.FireColor = RGB(<красный>,<зеленый>,<синий>)
Например, команда
Forms!Товары!Дот.ForeColor = RGB(255, 255, 0)
устанавливает желтый цвет текста для поля Дот формуляра Товары. Функция RGB задает требуемый цвет путем смешивания трех составляющих. Степень насыщения каждой составляющей лежит в диапазоне 0 .. 255.
Командой
Forms!<название формуляра>!<название поля>.BackColor = RGB(<красный>,<зеленый>,<синий>)
устанавливается требуемый цвет фона поля.
Командой
Forms!<название формуляра>!<название поля>.TextSize = <число>
задается размер шрифта в требуемом поле.
Команда
Forms!<название формуляра>!<название поля>.TextItalic = true
задает курсивное написание шрифта.
Функция Date возвращает значение текущей даты, а функция Date$ представляет текущую дату в виде строки.
Заполнение поля в формуляре (естественно, и в таблице) можно проверить логической функцией IsNull(<имя поля>). Если поле пустое, функция IsNull возвращает значение true, в противном случае возвращается значение false.
П
ереход
к созданию программного модуля,
привязанного к формуляру, предполагает
открытие данного формуляра в режиме
конструктора, вызов диалогового окна
Свойства
(через панель инструментов, главное
меню, контекстное меню или горячую
клавишу F4), переход на вкладку События,
определение требуемого события, запуск
построителя (кнопка .
. . ), выбор
варианта "Программа" и нажатие
кнопки ОК. В итоге это приводит к открытию
интегрированной среды разработки (ИСР)
программного модуля, включающей и окно
редактора, в котором уже зафиксированы
заголовок и окончание процедуры (Sub
<заголовок> и End
Sub).
Пользователю необходимо синтезировать
тело процедуры, сохранить текст модуля
стандартным для Windows-программ способом,
закрыть ИСР, закрыть окно Свойства
и перейти в режим применения формуляра.
В дальнейшем тело модуля можно модифицировать, копировать полностью и/или частично в другие модули, стирать.
Выполнение лабораторной работы
А) В соответствии с вариантом использовать существующую таблицу или создать и заполнить десятью записями таблицу ПОСТАВКИ, включающую следующие поля:
Поставщик;
Товар;
Дата поставки товара;
Количество поставленного товара;
Стоимость единицы товара;
Единицы измерения (кг, л, м и т.п.);
Транспортные расходы на поставку.
В) Реализовать следующий вариант задания:
В таблице СЛУЖАЩИЕ реализовать проверку следующего вида: для женщин возможна установка в поле "Семейное положение" только значений "незамужняя" и "замужем", а для мужчин - "женат" "холост". В случае установки запрещенного состояния - курсор остается в поле " Семейное положение ".
В таблице ПОСТАВКИ два вида товаров: мука и сахар и масло. В формуляре выводить в дополнительном поле стоимость всей партии. Для сахара существуют скидки при покупке: от 50 кг - 5%, от 500 - 10%. Единицы измерения сахара и муки - кг, а масла - л.
При наличии в просматриваемой записи таблицы СЛУЖАЩИЕ пустых полей выводится сообщение с указанием имен полей и курсор устанавливается в перовое из них.
При просмотре таблицы ПОСТАВКИ средствами формуляра в отдельном поле выводится количество дней между датой поставки и датой оплаты поставки. Если эта величина отрицательно (оплата произведена ранее поставки), то значение выводится зеленым цветом, в противном случае - красным. Если поставка не оплачена, выводится модальное окно с сообщением.
При просмотре таблицы СЛУЖАЩИЕ налог рассчитывается по следующему алгоритму: если оклад меньше 10000 руб., то налог равен нулю, в противном случае
Налог = (оклад - (400+(количество детей * 300))) * 13%.
Если налог меньше 1000 р., то он выводится шрифтом обычного размера, в противном случае размер - 12 пунктов.
При просмотре таблицы СЛУЖАЩИЕ средствами формуляра каждый вариант семейного положения выводится своим цветом. У военнообязанных фамилия отображается курсивом.
При движении по полям формуляра для таблицы СЛУЖАЩИЕ цвет текста текущего поля становится зеленым. При уходе фокуса цвет возвращается к исходному значению.
При движении просмотре таблицы ПОСТАВКИ средствами формуляра в отдельном поле выводится стоимость партии товара с учетом транспортных расходов. Цвет выводимого значения для оплаченного и неоплаченного товара разный.
При движении по полям формуляра для таблицы СЛУЖАЩИЕ цвет фона текущего поля становится желтым. При уходе фокуса цвет возвращается к исходному значению. Если поле не заполнено, выводится модальное окно с сообщением об этом.
При движении по полям формуляра для таблицы СЛУЖАЩИЕ цвет фона текущего поля становится светло-зеленым. При уходе фокуса цвет возвращается к исходному значению.
При просмотре таблицы ПОСТАВКИ средствами формуляра в модальном окне выводится количество дней между датой поставки и датой оплаты поставки. Если эта величина отрицательно (оплата произведена ранее поставки), то значение в поле даты оплаты товара выводится зеленым цветом, в противном случае - красным.
В таблице ПОСТАВКИ два вида товаров: мука и сахар. В формуляре выводить в дополнительном поле стоимость всей партии. Для муки существуют скидки при покупке: от 100 кг - 5%, от 1000 - 10%. Величина скидки отображается в модальном поле.
При просмотре таблицы СЛУЖАЩИЕ средствами формуляра в отдельном поле выводится возраст служащего. Если он превышает 60 лет для мужчины или 55 для женщины, то значение отображается красным цветом.
При просмотре таблицы ПОСТАВКИ средствами формуляра в модальном окне выводится количество дней после поставки, если товар не оплачен.
В таблице СЛУЖАЩИЕ реализовать проверку следующего вида: для работников одного или дух отделов допустимо только высшее образование. В случае неправильного ввода появляется модальное окно с информационным сообщением и курсор остается в поле "Образование".
При движении по полям формуляра таблицы ПОСТАВКИ текст текущего поля - курсив размером 10 пунктов. При уходе фокуса устанавливаются стандартные параметры шрифта. В отдельном окне выводится стоимость транспортных расходов, отнесенных к единице товара.
В таблице СЛУЖАЩИЕ реализовать проверку следующего вида: для работников с высшим образованием возраст должен быть не менее 21 года. В случае неправильного ввода появляется модальное окно с информационным сообщением и курсор остается в поле "Дата рождения".
В таблице СЛУЖАЩИЕ реализовать проверку следующего вида: работники отдела охраны должны быть только мужчины и военнообязанные старше 20 лет. В случае неправильного ввода появляется модальное окно с информационным сообщением и курсор остается в поле "Пол".
В таблице ПОСТАВКИ два вида товаров: мука и сахар. В формуляре выводится в дополнительном поле стоимость всей партии. Для муки существуют скидки при покупке от 100 кг - 5%, для сахара - от 50 кг - 7%. Величина скидки (если она отлична от нуля) отображается в модальном поле.
В таблице ПОСТАВКИ два вида товаров: мука и сахар. В формуляре выводится в дополнительном поле стоимость всей партии. Для муки существуют скидки при покупке от 100 кг - 5%, для сахара - от 50 кг - 7%. Стоимость партии при отсутствии скидки выводится зеленым цветом, а при наличии скидки - красным на желтом фоне.
С) Результат выполнения задания показать преподавателю.
Содержание отчета
1) Вариант задания по реализации программного модуля;
2) Листинг модуля.
Контрольные вопросы
1. К какому классу языков относится VBA?
2. Может ли быть источником событий клавиатура компьютера? Манипулятор "мышь"?
3. Как именуются процедуры модуля?
4. Какие параметры полей можно менять программно?
5. Сколько цветовых оттенков можно задавать с помощью языка VBA?
Лабораторная работа № 11