Роздрукувати сторінку
Главная \ Методичні вказівки \ Методичні вказівки \ 2882 Лабораторна робота №9 на тему Використання VBA в формах, Бази даних та інформаційні системи, ЗНТУ

Лабораторна робота №9 на тему Використання VBA в формах, Бази даних та інформаційні системи, ЗНТУ

« Назад

Лабораторна робота №9 на тему Використання VBA в формах

Мета роботи: навчитися створювати коди програм за допомо­гою VBA та використовувати методи і події об’єктів форм.

4.1 Робота з формами

Форми мають багато спільного зі звітами. Вони мають однакові розділи, однакові елементи керування.

Посилання на форму можна виконати одним із способів:

Forms ( ім’я_форми ”) або

Forms ! ім’я_форми або

Forms ! [ім’я_форми] , якщо в імені форми є пробіли.

Події форми, коли вона відкривається вперше, здійснюються в такому порядку одна по одній:

Open – форма вже відкрита, проте перший запис ще не виведений;

Load – форма відкривається і виводиться на екран;

Resize – подія виникає, коли відкривається форма, а також, коли змінюються будь-які її розміри;

Activate – форма стає активним вікном;

Current – запис отримує фокус і стає поточним, а також під час оновлення екрану або виконання запиту для форми.

Об’єкт DoCmd  дозволяє з середовища VBA викликати методи Access. Синтаксис:

DoCmd .  метод (перелік параметрів)

Найчастіше використовуються такі методи:

  • OpenForm – відкриває форму в режимі перегляду, конструктора, форми або таблиці. При цьому користувач має можливість визна­чити режими введення даних, режим вікна, а також відібрати, які саме записи необхідно показати в формі. Параметри методу:

- FormName – обов’язковий параметр, який визначає ім’я форми;

- View – режим, в якому форма відкривається; визначається кон­стантою зі списку: acNormal (за замовчанням), acPreview, acFormPivotTablе,acFormPivotChart; acDesign, acFormDS;

- FilterName – ім’я фільтру, який збережений у вигляді запиту і використовується для відбору і сортування записів;

- WhereCondition вираз на мові SQL (без слова where) для відбо­ру записів; заміняє фільтр, якщо відсутній попередній параметр;

Наприклад, щоб відкрити форму tvidom для певного робітника, можна побудувати критерій та відкрити форму таким чином:

kriteria = BuildCriteria("fio" , dbText , InputBox("Введіть прізвище"))

DoCmd.OpenForm "tvidom",  ,  ,  kriteria

- DataMode – режим введення даних в форму, якщо форма відкри­вається  в режимі таблиці або форми; можливі значення парамет­ру: acFormAdd, acFormEdit, acFormReadOnly; за замовчанням –acFormPropertySettings (використовуються властивості форми);

- WindowMode – режим вікна, в якому відкривається форма: acWindowNormal (за замовчанням), acDialog, acHidden, acIcon;

- OpenArgs – строковий вираз, який передається як параметр у форму, що відкривається; він встановлює властивість форми OpenArgs. Значення цієї властивості найчастіше використовують у модулі форми в кодах на подію Open форми.

Задача 4.1 Відкрити автоформу tvidom (див. рис. 3.1) із заголов­ком "tvidom–автоформа".

Спочатку треба створити модуль для виклику форми

Sub заголовок_форми()

DoCmd.OpenForm "tvidom" ,  ,  ,  ,  ,  , "tvidom–автоформа"

End Sub

А потім в коді на подію Load  форми надати властивості Caption значення аргументу OpenArgs

Private Sub Form_Load()

Me.Caption = OpenArgs

End Sub

  • ShowAllRecords – відміняє дію будь-якого фільтру в активній таб­лиці або наборі записів, виконує повторний запит і забезпечує ви­ведення всіх записів (і нових також); метод не має аргументів.

  • OpenDataAccessPage  – відкриває сторінку доступу до даних; має 2 аргументи:  ім’я сторінки (DataAccessPageName) – обов’язковий параметр та режим (View); за замовчанням встановлює режим пе­регляду (acDataAccessPageBrowse), можливий і режим конструкто­ра (acDataAccessPageDesign).

  • OpenQuery – відкриває запит, ім’я якого вказувати обов’язково.

  • OpenReport – відкриває звіт із вказаним ім’ям.

Задача 4.2 Створити послідовність форм для пошуку відомостей про заробітки певного робітника. Пошук здійснювати за прізвищем або за табельним номером.

Спочатку створимо за допомогою майстра форм підпорядковану форму, яка буде відображувати відомості про заробітки. Виберемо для форми тип Режим таблицы. Включимо до форми поля dat і zar (дата роботи і заробіток) таблиці tzarobitok і встановимо порядок сортування за датою. В розділі Примечание формы для обчислення загальної суми заробітків розмістимо Поле1 та встановимо для нього властивість Данные = Sum ( [zar] ). Конструктор форми зображений на рис. 4.1. 

Рисунок 4.1 – Конструктор форми для таблиці tzarobitok

Далі створимо наступну форму для даних з таблиці tvidom. Ви­беремо поля tn і fio (табельний номер і прізвище) та тип Одиночная форма. В режимі конструктора перетягнемо на макет цієї форми з вікна бази даних піктограму форми tzarobitok подчиненная форма. До форми tvidom буде вбудована підпорядкована форма. В конструкторі у вікні властивостей Подчиненная форма / отчет на вкладці Данные будуть встановлені поля, за якими здійснюється зв’язок між таблиця­ми. Це властивості:

Подчиненные поля

tn

Основные поля

tn

Якщо підпорядковану форму запускати окремо, то будуть підсу­мовані всі заробітки. А якщо запускати головну форму, то враховува­тись будуть заробітки тільки одного конкретного робітника. Щоб відо­бразити підсумки на формі tvidom, розмістимо нове Поле2 в розділі Примечание формы з підписом Усього нараховано і встановимо для нього властивість Данные

= IIf ( IsNull ( [tzarobitok подчиненная форма]![Поле1] ) ;0 ;

[tzarobitok подчиненная форма]![Поле1] )

Тобто, якщо людина не має заробітків, для неї немає підсумків в таблиці tzarobitok, а в Поле2  відображується 0. Форма tvidom буде викликатися головною формою для одного робітника, тому встанови­мо для  неї властивість Кнопки перехода=Нет.

Тепер створимо головну форму. Розмістимо на ній 2 вільних Поля, командну кнопку та написи  (див. рис. 4.2). 

Рисунок 4.2 – Конструктор головної форми

Після запуску форми треба ввести прізвище або табельний но­мер людини. Якщо клікнути мишкою на полі fam (прізвище), то зни­щується вміст поля nn (табельний номер) і навпаки. Якщо такої люди­ни немає, про це виводиться повідомлення. Створимо коди програм на події Click для полів та командної кнопки „Знайти”.

Option Compare Database

Public kriteria As String, nom As Integer

Private Sub Знайти_Click()

код на кнопку Знайти

Dim dbMyDB As Database, rsRec As Recordset

Dim name As String, kriteria As String, nom as Integer

Set dbMyDB = CurrentDb

Set rsRec = dbMyDB.OpenRecordset ( "tvidom" , dbOpenDynaset)

If fam.Value > " " Then

побудова критерію за прізвищем

name = fam .Value

kriteria = BuildCriteria ( "fio", dbText , name)

ElseIf nn .Value > 0 Then

побудова критерію за табельним номером

nom = nn .Value

kriteria = BuildCriteria ("tn", dbInteger , nom)

Else

    MsgBox "Заповніть поле для пошуку!"

    Exit Sub

End If

пошук запису в таблиці tvidom , що задовольняє критерію

rsRec.FindFirst kriteria

If rsRec.NoMatch Then

якщо запис не знайдено

    MsgBox "Такої людини немає"

Exit Sub

End If

DoCmd . Close    ‘ закрити форму

виклик форми tvidom

DoCmd . OpenForm "tvidom",  ,  ,  kriteria

End Sub

Private Sub fam_Click()

знищується вміст поля nn

nn.Value = ""

End Sub

Private Sub nn_Click()

‘ знищується вміст поля fam

fam = ""

End Sub 

Рисунок 4.3 – Зразок роботи головної форми

Спочатку викликається головна форма (див. рис. 4.3). В одне з полів вводиться табельний номер або прізвище людини. Кнопка Знайти закриває головну форму і викликає форму  tvidom  з даними тільки про вказану людину (див. рис. 4.4).

Можна форму tvidom в режимі конструктора розмістити на головній формі. Тоді в коді програми буде зайвим рядок

DoCmd . OpenForm "tvidom",  ,  , kriteria 

Рисунок 4.4 – Зразок роботи форми tvidom

У вікні властивостей головної форми для об’єкту Подчиненная форма / отчет на вкладці Данные треба вказати елементи, за якими здійснюється зв’язок між формами, а саме:

Подчиненные поля

tn

Основные поля

nn

4.2 Контрольні питання

1) Події форми Open , Load, Resize, Activate, , Current.

2) Поняття підпорядкованої форми.

3) Посилання на елементи керування форми.

4) Об’єкт DoCmd та його методи.

5) Передача значень параметру від однієї форми до іншої.

4.3 Індивідуальні завдання

Створити форми та написати коди програм для розв’язку завдань свого варіанту.

Варіант 1

1) Створити форму, на якій для кожного господарства – замовни­ка будуть виведені його назва, телефон та перелік замовлень. Вивести на формі дату останнього замовлення.

2) Створити форму для реєстрації нового замовлення з усіма потрібними полями. Забезпечити унікальність коду замовлення. Назву замовника та назву добрива вибирати зі списків. Підрахувати суму до сплати (вартість замовлення – пільги + 20%ПДВ) та загальну суму, на яку зроблені замовлення вказаним господарством.

Варіант 2

1) Створити форму, на якій для кожного замовника будуть вказа­ні його назва, адреса, телефон та перелік замовлень. Вивести на формі загальну масу перевезеного вантажу.

2) Створити форму для реєстрації нового замовлення з усіма по­трібними полями. Забезпечити унікальність номеру замовлення. Назву замовника та транспортний засіб вибирати зі списків. Підрахувати вартість замовлення (відстань* маса * вартість т/км – пільги) та загаль­ну кількість замовлень для вибраного замовника.

Варіант 3

1) Створити форму, на якій для кожного готелю будуть вказані його назва, рівень сервісу та відомості про гостей, що зараз перебува­ють в готелі, з підрахованою сумою до сплати за проживання (вартість за одну добу*термін проживання*пільги + 20%ПДВ). Обчислити загальну сплачену суму для кожного готелю.

2) Створити форму для реєстрації нового гостя. Інформація по­винна додаватися до таблиці Гості міста, якщо гість в ній не зареєст­рований, та до таблиці Замовлення. Готель та тип номеру вибирати зі списку. Передбачити унікальність коду замовлення та коду гостя.

Варіант 4

1) Створити форму, на якій для кожного постачальника вивести його назву, адресу і перелік замовлень з підрахованою сумою до спла­ти (вартість замовлення +20% ПДВ) та загальну суму, на яку зроблені замовлення.

2) Створити форму для реєстрації нового замовлення. Забезпечи­ти унікальність коду замовлення. Постачальника, назву та код матеріа­лу вибирати зі списків. Перевіряти, щоб дата замовлення була раніше за дату постачання. Вивести дату першого замовлення.

Варіант 5

1) Створити форму для реєстрації нового платежу. Прізвище споживача вибирати зі списку. Після цього автоматично виводити на формі назву пільгової категорії, відсоток сплати та розрахунковий рахунок. Перевіряти, щоб останній показник лічильника був більшим за попередній. Виводити на формі витрачену кількість електроенергії.

2) Створити форму, яка демонструє список платежів для кожного споживача з підрахованою сумою до сплати (вартість замовлення-пільги+20%ПДВ) та загальну суму, що сплачена за поточний рік.

Варіант 6

1) Створити форму, на якій для кожного магазину будуть вказані його назва, телефон та відомості про замовлення. Вивести на формі вартість кожного замовлення та підрахувати загальну кількість замов­лень для кожного магазину окремо.

2) Створити форму для реєстрації нового замовлення з усіма по­трібними полями. Забезпечити унікальність коду замовлення. Назву магазину та назву продукції вибирати зі списків. Підрахувати загальну вартість замовлень для вибраного магазину.

Варіант 7

1) Створити форму, на якій для кожного постачальника вивести його назву, адресу, телефон і перелік замовлень із вартістю та сумою до сплати (вартість замовлення +20% ПДВ). Підрахувати середню вартість одного замовлення без ПДВ.

2) Створити форму для реєстрації нового замовлення. Забезпечи­ти унікальність коду замовлення. Постачальника, назву та код вузла вибирати зі списків. Після вибору вузла автоматично виводити на формі виробника вузла та вартість одного вузла. Підрахувати вартість замовлення та суму до сплати.

Варіант 8

1) Створити форму, на якій для кожного рейсу будуть вказані аеропорт вильоту і аеропорт призначення та перелік проданих квитків, упорядкований за датою вильоту. Вивести на формі сплачені суми та загальну кількість проданих квитків для кожного рейсу окремо.

2) Створити форму для реєстрації продажу квитків з усіма по­трібними полями. Номер рейсу, тип салону та розмір пільг вибирати зі списків. Вказати на формі найбільшу кількість проданих квитків в одному замовленні для вказаного рейсу.

Варіант 9

1) Створити форму, яка для кожного хірурга демонструє список його пацієнтів із зазначенням прізвища та категорії пацієнта, назви та дати операції. Підрахувати кількість пацієнтів для кожного хірурга.

2) Створити форму для реєстрації нового пацієнта. Категорію та стать пацієнта, назву операції та хірурга вибирати зі списків. Підраху­вати та вивести на формі загальну вартість лікування і суму до сплати з урахуванням пільг.

Варіант 10

1) Створити форму, на якій для кожного магазину будуть вказані його назва, адреса та відомості про замовлені книги. Вивести на формі загальну кількість замовлених книг та найбільший обсяг замовлення.

2) Створити форму для реєстрації нового замовлення. Забезпечи­ти унікальність номеру замовлення. Назву магазину та автора і назву книги вибирати зі списків. Після вибору книги виводити на формі кількість сторінок та відпускну ціну одного примірника. Підрахувати вартість усього замовлення з урахуванням знижок.

Варіант 11

1) Створити форму, на якій для кожного цеху будуть вказані його телефон та відомості про продукцію, поставлену на склад. Вивести на формі дату останньої поставки.

2) Створити форму для реєстрації надходження нової партії про­дукції на склад. Забезпечити унікальність коду партії. Номер цеху, назву продукції та її ґатунок вибирати зі списків. Дату реєстрації за замовчанням встановлювати рівній системній даті. Перевіряти, що об’єм партії продукції більше або дорівнює обсягу мінімальної партії.

Варіант 12

1) Створити форму, яка для кожної пільгової категорії виводить її назву, відсоток сплати та відомості про сплачені суми за телефон із зазначенням прізвища абонента, номеру телефону та дати платежу. Підрахувати загальну сплачену суму.

2) Створити форму для реєстрації чергового платежу. Номер те­лефону вибирати зі списку. Після цього виводити на формі назву піль­гової категорії абонента, відсоток сплати та кількість несплачених хви­лин по всіх видах розмов. Розраховувати розмір суми до сплати в за­леж­ності від пільг та дати сплати.

ЛІТЕРАТУРА 

  1. В.А. Биллиг, М.И. Дехтярь. VBA и Office 2000. Офисное программирование. Москва, «Русская редакция» - 2002 г., 672 с.

  2. Васильев А., Андреев А. VBA в Office 2000: учебный курс. – СПб.: Питер, 2001. – 432с.: ил.

  3. Кузьменко В.Г. VBA 2000. – М.: Издательство БИНОМ, 2000. – 408с.

  4. Послед Б.С. Access 2000. Базы данных и приложения. – К.: Издательство “ДиаСофт”, 2000. – 512с.

  5. Слепцова Л.Д. Программирование на VBA. Самоучитель.: – М.: Изд. дом «Вильямс», 2004. – 384с.: ил.

  6. Методичні вказівки та завдання до лабораторних робіт з курсу “Бази даних та інформаційні системи” за темою “Робота в СУБД Access з використанням SQL” для студентів денної форми навчання спеціальності 7.080203 Системний аналіз і управління / Укл. Кузіна В.М.– Запоріжжя: ЗНТУ, 2006.– с. 54.– № 1837

З повагою ІЦ "KURSOVIKS"!