Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
1071 Курсова заочников.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
10.13 Mб
Скачать

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