- •Методичні вказівки та завдання до курсової роботи №2 з курсу
- •1 Вибір варіанта завдання
- •2 Загальні вимоги до виконання курсової роботи №2
- •3 Варіанти індивідуальних завдань до курсової роботи
- •4 Стислі теоретичні зведення
- •4.1 Методи об'єкта Recordset
- •MsgBox "Книг такого автора в бібліотеці немає"
- •4.2 Властивості об'єкта Recordset
- •5 Приклад виконання курсової роботи
- •5.1 Завдання на курсову роботу:
- •Пояснення до курсової роботи
- •'Ця процедура викликає форму та передає код пацієнта як параметр
- •Література
5.1 Завдання на курсову роботу:
Форми:
Для кожної таблиці прості форми;
Створити форму з підпорядкованою формою:
в головній формі повинна бути інформація про лікарів;
в підпорядкованій формі для кожного лікаря навести список його пацієнтів з вартістю лікування та сумою до сплати.
За допомогою Конструктора форм створити в формі текстові поля, в яких підрахувати для кожного лікаря загальну суму лікування, суму до сплати, премію лікаря. Лікарі отримують такі премії за проведене лікування: 15% від суми до 300гр, 10% - до 1000гр, 5% - вище 1000гр.
Розробити систему для використовування у комерційних стоматологічних лікарнях для реєстрації пацієнтів, реєстрації лікування, збереження інформації про лікарів цієї лікарні та тарифів. Необхідно надати можливість обчислювати загальну вартість лікування кожного пацієнта, суму до сплати.
Система повинна мати такі форми, створені за допомогою конструктора:
“Введення даних про лікування” з такими елементами керування:
текстове поле для виведення поточної дати;
текстове поле для введення коду пацієнта;
командну кнопку “Пошук”, з якою зв'язана процедура пошуку інформації про пацієнта та виведення її в вільні текстові поля (прізвище, ім’я та по батькові, дата народження, стать, категорія пацієнта);
список, що розкривається, з якого необхідно вибрати вид роботи для лікування;
список, що розкривається, з якого необхідно вибрати лікаря;
текстове поле, що показує вартість лікування;
командну кнопку “Записати лікування”, з якою зв'язана процедура, що додає новий запис до таблиці лікування, потім очищує три останніх елемента керування що дозволяє зробити декілька записів про декілька видів робіт з лікування одного пацієнта;
командну кнопку “Підрахувати загальну вартість”, що викликає форму “Вартість лікування”.
“Вартість лікування” з такими елементами керування:
текстове поле, в якому виводиться код пацієнта;
текстове поле, в якому виводиться дата реєстрації;
текстові поля, в які виводиться інформація про пацієнта: прізвище, ім’я та по батькові, дата народження, стать, категорія, адреса;
список, в якому наведені всі види робот з їх вартістю;
текстове поле, в якому обчислюється та виводиться загальна вартість лікування з урахуванням пільг, якщо вони є в пацієнта;
командна кнопка з написом “Квитанція” для виклику програми, що виводить на печать квитанцію до сплати вартості лікування.
Звіти:
для кожного лікаря загальну суму, що сплачена пацієнтами, щомісячно за рік з підрахунком відсоткового входження до загальної суми;
загальна сума премій для кожного лікаря за поточний рік.
Пояснення до курсової роботи
Для виконання курсової роботи використовувалась база даних, яка створена в контрольній роботі. Три таблиці заповнені даними та встановлені зв’язки поміж ними.
С
хема
даних з встановленими зв’язками поміж
таблицями наведені на рис. 5.1
Рисунок 5.1 - Схема даних
П
рості
форми створені за допомогою майстра
форм. Приклад однієї з них наведено на
рис. 5.2. Прості форми дозволяють працювати
з даними в таблицях, корегувати, додавати
нові дані, видаляти ті, що не потрібні,
переглядати введені. Такі форми можуть
бути двох типів: показувати по одному
запису (прості) та показувати декілька
записів (стрічкова або таблиця). Приклад
стрічкової (ленточной)
форми
наведено на рис. 5.3
Рисунок 5.2 - Проста форма для таблиці Лікарі
Рисунок 5.3 - Форма стрічкового типу для запиту Список лікування
В цій формі в області примітка форми в режимі конструктора створено два обчислювальних поля, перше сумує дані з поля Вартість та має ім’я Загальна вартість, друге обчислює премію лікарям, його ім’я не змінювалось, воно встановлено Access – Поле12. На рис.5.4 наведено екран Access, на якому можна побачити такі вікна: вікно конструктора форм для форми Список лікування, в цьому вікні активним є обчислювальне текстове поле Поле12; вікно властивостей активного елемента управління та вікно “Построитель выражений”, в якому можна побачити формулу, за якою обчислюється премія лікарям. Властивості “Данные” полів Загальна вартість та Поле12 мають відповідно такі значення: =sum([Вартість])
=IIf([Загальна вартість]<300;[Загальна вартість] *0,15; IIf([Загальна вартість]<1000;[Загальна вартість]*0,1; [Загальна вартість]*0,05)).
Властивість “Поле номера записи” має значення “Ні”, тому знизу форми не показується елемент з кнопками, що змінюють активний запис.
Р
исунок
5.4 - Стрічкова форма в режимі конструктора.
Ця форма використовується як підпорядкована в головній формі Лікарі1. Обидві ці форми створюються Майстром форм, потім поля, що обчислюються додаються в режимі конструктора. На рис.5.5 наведено в режимі конструктора форма з підпорядкованою. Для підпорядкованої форми бачимо тільки відведене місце. Щоб побачити саму підпорядковану форму треба її відчиняти в режимі конструктора.
Р
исунок
5.5 - Головна форма, що показує дані про
лікарів та їх роботу
В цю форму в режимі конструктора додано напис “Робота лікарів”, розташовано напис в області “Заголовок формы”. В робочому режимі вигляд форми Лікарі1 з підпорядкованою формою наведено на рис. 5.6.
Рисунок 5.6 - Форма Лікарі1 з підпорядкованою в роботі
Форму “Введення даних про лікування “ цілком створюємо в режимі конструктора (рис.5.7). В формі розташовані такі елементи управління:
текстове поле для вводу коду пацієнта, цьому полю надано ім’я kod;
текстове поле для виведення в нього прізвища пацієнта, цьому полю надано ім’я name;
текстове поле для виведення в нього дати народження пацієнта, цьому полю надано ім’я dnar;
текстове поле для виведення в нього адреси пацієнта, цьому полю надано ім’я adres;
текстове поле для виведення в нього статі пацієнта, цьому полю надано ім’я stat;
Р
исунок
5.7 - Форма “Введення даних
про лікування” в режимі
конструктора
текстове поле для виведення в нього категорії пацієнта, цьому полю надано ім’я kat;
список, що розкривається, з якого користувач може обрати вид лікування пацієнта; цей елемент управління створено за допомогою майстра, він бере дані з таблиці Тарифи, перший стовпчик цієї таблиці не показується але саме його значення запам’ятовуються в властивості Value при обранні якого-небудь запису; цей елемент має ім’я robota; у властивість Данные майстром, що будував цей елемент управління, записано запит:
SELECT Тарифи.[Код роботи], Тарифи.Процедура,
Тарифи.[Ступень важкості] FROM Тарифи;
список, що розкривається, з якого користувач може обрати лікаря; цей елемент також створено за допомогою майстра, показує дані з таблиці Лікарі, та має ім’я likar;у властивість Данные майстром, що будував цей елемент управління, записано запит:
SELECT Лікарі.[Код лікаря],Лікарі.Прізвище FROM Лікарі;
поле, в якому виводиться вартість лікувальної процедури для обраного пацієнта;
командна кнопка, на якій розташовано бінокль; з цією кнопкою пов’язана процедура, що за кодом пацієнта розшукує запис про нього в таблиці Пацієнти та виводить в текстові поля форми ці дані; ця кнопка має ім’я Кнопка1;
командна кнопка, на якій розташовано напис Записати; з цією кнопкою пов’язана процедура, що записує дані про лікування в таблицю Лікування, додаючи новий запис; ця кнопка має ім’я Кнопка2;
командна кнопка, на якій розташовано напис “Підрахувати загальну вартість лікування”, має ім’я Кнопка3 та викликає нову форму, що виводить дані про введене лікування та підраховує його загальну вартість.
Процедури, що пов’язані з формою:
Option Compare Database
Dim rstpacient As Recordset, kp As String,v As Currency
Dim rstlik As Recordset, rsttarif As Recordset
Dim kr As String, klic As String
Private Sub likar_Click()
Кнопка2.SetFocus
End Sub
Private Sub robota_Click()
On Error Resume Next
robota.SetFocus
kr = robota.Value
MsgBox kr
Set rsttarif = CurrentDb.OpenRecordset("Тарифи", dbOpenDynaset)
rsttarif.FindFirst "[Код роботи]='" & kr & "'"
v = rsttarif![Вартість]
vrt.SetFocus
vrt.Text = v
End Sub
Private Sub Кнопка1_Click()
Set rstpacient = CurrentDb.OpenRecordset("Пацієнти", dbOpenDynaset)
kod.SetFocus
kp = kod.Text
rstpacient.FindFirst "[Код пацієнта]='" & kp & "'"
If rstpacient.NoMatch Then
MsgBox "Введено помилковий код пацієнта!"
kod.SetFocus
Exit Sub
End If
prizv.SetFocus
prizv.Text = rstpacient![Прізвище]
adres.SetFocus
adres.Text = rstpacient![Адреса]
dnar.SetFocus
dnar.Text = rstpacient![Дата народження]
stat.SetFocus
stat.Text = rstpacient![Стать]
kat.SetFocus
kat.Text = rstpacient![Категорія]
End Sub
Private Sub Кнопка2_Click()
Set rstlik = CurrentDb.OpenRecordset("Лікування",_
dbOpenDynaset)
likar.SetFocus
klic = likar.Value
rstlik.AddNew
rstlik![Код пацієнта] = kp
rstlik![Код роботи] = kr
rstlik![Код лікаря] = klic
rstlik![Дата лікування] = Date
rstlik.Update
Кнопка3.SetFocus
End Sub
Private Sub Кнопка3_Click()
