
- •Методичні вказівки та завдання до курсової роботи №2 з курсу
- •1 Вибір варіанта завдання
- •2 Загальні вимоги до виконання курсової роботи №2
- •3 Варіанти індивідуальних завдань до курсової роботи
- •4 Стислі теоретичні зведення
- •4.1 Методи об'єкта Recordset
- •MsgBox "Книг такого автора в бібліотеці немає"
- •4.2 Властивості об'єкта Recordset
- •5 Приклад виконання курсової роботи
- •5.1 Завдання на курсову роботу:
- •Пояснення до курсової роботи
- •'Ця процедура викликає форму та передає код пацієнта як параметр
- •Література
4 Стислі теоретичні зведення
Для створення інформаційних систем, що допомагають зберігати дані про яку-небудь предметну область та автоматизувати обробку даних, використовують системи управління базами даних. Ці системи дають можливість зберігати дані в зручній для користувача формі. Крім того, системи містять мови програмування, використовуючи які можна створити зручні системи обробки даних.
Система Access використовує мову програмування Visual Basic for Application для створення автоматизованих систем обробки даних.
Основні оператори та правила створення процедур мовою VBA розглянуто в попередньому семестрі. Зараз розглянемо особливості VBA в системі Access.
Об'єкт Recordset можна створювати після відкриття бази даних. Об'єкт Recordset являє собою записи вихідної таблиці бази даних або результуючий набір даних, що повертається у результаті запиту. Він дозволяє управляти даними в базі даних на рівні запису. На рівні полів керування даними здійснюється об'єктом Field.
Є такі типи об'єкта Recordset:
Table - працює з однією таблицею бази даних. У цьому випадку дані можна індексувати, що прискорює пошук записів і їхнє сортування. При пошуку записів припустимо використовувати замість методу Find метод Seek.
Dynaset - дозволяє одержувати, аналізувати, вилучати і редагувати дані з декількох динамічно пов'язаних таблиць.
Об'єктна змінна типу Recordset створюється за допомогою методу OpenRecordSet. Як і для будь-якої об'єктної змінної її треба спочатку оголосити, а тільки потім установити посилання на об'єкт, що повертається методом OpenRecordSet. Синтаксис:
Dim Запис as RecordSet
Set Запис=CurrentDb.OpenRecordSet(НабірЗаписів, Тип, Параметри, Блок)
Аргументи:
Запис - об’єктна змінна, що посилається на об'єкт Recordset, що відчиняється;
НабірЗаписів – ім’я таблиці або запиту;
Тип - константа, що вказує тип об'єкта Recordset, що відчиняється. Припустимі значення: dbOpenTable, dbOpenDynaset;
Блок - установлює тип блокування даних. Припустиме значення: dbReadOnly, якщо відчиняється тільки для читання.
Наприклад, створимо новий об’єкт Recordset на основі таблиці Книги та виведемо на екран значення полів з першого запису:
Dim Books as RecordSet
Set Books = _
CurrentDb.OpenRecordSet(“Книги”,dbOpenDynaset)
Msgbox Books![Автор] & Books![Назва]
4.1 Методи об'єкта Recordset
AddNew - створює і добавляє новий запис. Після внесення змін у новий запис варто викликати метод Update для зберігання змін і додавання запису в об'єкт Recordset. До виклику методу Update зміни в базу даних не заносяться. Наприклад, додамо в таблицю Книги запис про нову книгу:
Sub ДодатиЗапис()
Dim Books as RecordSet, Shifr As String, Avt As String
Dim Nazv As String, Year As Integer, Price As Currency
Set Books = _
CurrentDb.OpenRecordSet(“Книги”,dbOpenDynaset)
Shifr=InputBox(“Введіть шифр книги”)
Avt = InputBox(“Введіть автора книги”)
Nazv = InputBox(“Введіть назву книги”)
Year = InputBox(“Введіть рік видання книги”)
Price = inputBox(“Введіть вартість книги”)
Books.AddNew ‘додаємо новий пустий запис в таблицю
Books![Шифр] = Shifr
Books![Автор] = Avt
Books![Назва] = Nazv
Books![Рік] = Year
Books![Вартість] = Price
Books.Update
End Sub
Clone - створює копію об'єкта Recordset.
Close - закриває відкритий об'єкт доступу до даних.
Delete - видаляє поточний запис у об'єкті Recordset, що оновлюється.
Edit - копіює поточний запис із об'єкта Recordset, що оновлюється у буфер для наступної зміни. Після внесення змін у новий запис варто викликати метод Update для зберігання змін і додавання запису в об'єкт Recordset. До виклику методу Update зміни в базу даних не заносяться
MoveFirst, MoveLast, MoveNext, MovePrevious - робить поточним перший, останній, наступний і попередній запис об'єкта Recordset відповідно. Наприклад, переглянемо всі записи таблиці Книги та підрахуємо скільки в бібліотеці книг, що видані після 2000 року та їх загальну вартість.
Sub ПереглядЗаписів()
Dim Books as RecordSet, k As Integer, Price As Currency
Set Books = _
CurrentDb.OpenRecordSet(“Книги”,dbOpenDynaset)
Books.MoveFirst
Do Until Books.EOF
If Books![Рік] > 2000 Then
k=k+1
Price=Price+Books![Вартість]
End If
Books.MoveNext
Loop
MsgBox “Всього книг - ” & k & “ Вартість - ” & Price
End Sub
FindFirst, FindLast, FindNext, FindPrevious - знаходить перший, останній, що наступний або попередній запис відповідно, що задовольняє заданим умовам, і робить цей запис поточним. Наприклад, знайдемо в таблиці Книги книгу автора Гарнаева А.:
Sub Пошук()
Dim rstBooks As Recordset
Set rstBooks = CurrentDb. OpenRecordset("Книги", _
dbOpenDynaset)
rstBooks.FindFirst "[Автор]='Гарнаев А.'"
If rstBooks.NoMatch = False Then
MsgBox "Назва книги : " & rstBooks! [Назва]
Else