- •Операційна система windows, текстовий редактор word, табличний процесор excel
- •1.1. Знайомство із клавіатурою. Робота в Windows з папками й файлами
- •1.2. Робота з файлами, папками, ярликами в Провіднику
- •1.3. Текстовий процесор Word - створення документа, його редагування й форматування
- •1.4. Текстовий процесор Word - робота з таблицями
- •1.5. Текстовий процесор Word - робота з формульним редактором, набір і редагування математичних формул
- •1.6. Текстовий процесор Word - робота із графічними об'єктами - створення малюнків
- •1.7. Табличний процесор Excel - створення й занесення даних у
- •1.8. Табличний процесор Excel – робота з майстром формул
- •1.9. Табличний процесор Excel – робота з діаграмами й графіками
- •1.10. Табличний процесор Excel – рішення пошукових завдань лінійного програмування
- •2. Програмування мовою vba
- •2.1. Вступ
- •2.2. Робота у вікні модуля. Структура програми
- •2.3. Основні типи даних
- •2.4. Змінні, масиви, константи і їхній опис
- •2.5. Операції vba
- •2.5.1. Арифметичні операції
- •2.5.2. Операції порівняння
- •2.5.3. Логічні операції
- •2.6. Стандартні функції
- •2.7. Вираження
- •2.8. Оператор присвоювання
- •2.9. Введення даних користувачем
- •2.10. Виведення даних
- •2.11. Оператори переходу. Програмування розгалужуваних обчислювальних процесів
- •If умова Then оператор
- •If умова Then
- •Оператор If...Then...Else.
- •If умова Then
- •2.12. Оператори циклу. Програмування циклічних обчислювальних процесів
- •Оператор Do ...Loop
- •Оператор While...Wend
- •Оператор For... Next
- •Оператор For Each...Next
- •2.13. Процедури
- •2) Ім'я Список аргументів
- •3. Система управління базами даних access
- •3.1. Вступ
- •3.2. Що таке бази даних?
- •3.3. Архітектура Microsoft Access
- •3.4. Створення бази даних. Створення таблиць. Зв'язування таблиць
- •Визначення типів даних
- •3.5. Зміна проекту бази даних
- •3.6. Створення запитів
- •3.7. Створення й редагування форм
- •3.8. Створення й редагування звітів
- •3.9. Створення й застосування макросів
- •3.10. Модулі Access
- •3.11. Класи й сімейства
- •3.12. Об'єктні моделі Microsoft Office
- •3.13. Моделі об'єктів Microsoft Access
- •3.14. Моделі об'єктів доступу до даних dao і ado
- •3.15. Посилання на об'єкти
- •3.16. Властивості й методи об'єктів
- •3.17. Застосування методу DoCmd у програмах vba
- •3.18. Робота з об'єктами доступу до даних
- •4. Список літератури
- •Додаток
- •5. Таблиці бази даних „учебный процесс”
3.18. Робота з об'єктами доступу до даних
Щоб працювати з даними в базі даних, потрібно спочатку виконати з'єднання із цією базою даних, тобто одержати на неї посилання. У моделі DAO це буде Database, а в моделі ADO – Connection. Коли посилання отримане, можна звертатися до сімейств і об'єктів цієї бази даних. Приклади з'єднання дані вище в розділі “Модели объектов доступа к данным DAO і ADO”.
Типи даних об'єктів визначаються посиланнями на об'єкти відповідних моделей, що зберігаються в бібліотеках. Найпоширенішими об'єктними типами, підтримувані Access VBA, є:
- об'єктні типи даних Access з бібліотеки Access 10.0 – Form, Report, Control – відповідно присвоюються об'єктам, формам, звітам і їхнім елементам керування;
- об'єктні типи даних DAO – Database, TableDef, Field, DAO.Recordset, QueryDef. Тип даних Database присвоюється об'єкту База данных, QueryDef – запити (вираз SQL), TableDef – таблиці, Dao.Recordset – набору записів у таблиці;
- об'єктні типи даних ADO – Connection заміняє тип даних Database в DAO, Сommand - QueryDef, ADODB - DAO.Recordset.
Розглянемо приклади опису об'єктних змінних:
Dim FF As Form, Fam As Control, Bd As Database
Присвоювання значення об'єктній змінній
Оператор Dim тільки описує змінну. Для того, щоб змінна містила посилання на об'єкт, необхідно за допомогою оператора Set присвоїти цієї змінній посилання на об'єкт відповідного типу. Тип об'єктної змінної повинен відповідати об'єкту, їй присвоєному. Наприклад:
1) Set FF = Forms![Список студентов] - створює змінну FF для форми Список студентов;
2) Set Fam = Forms![Список студентов]!ФИО - створює змінну Fam в елементі керування форми Список студентов;
3) Set Bd = CurrentDB() – присвоює змінній Bd значення поточної бази даних;
4) Set Rs = db.OpenRecordset("Продажи") - – присвоює змінній Rs значення запису таблиці Продажи поточної бази даних;
5) Set Tabl = Bd.CreateTableDef(“Сотрудники”) – створює в поточній Bd таблицю з іменем Сотрудники й зберігає посилання на цей об'єкт у змінної Tabl;
-
Set Fld = Tabl.CreateField(“ФИО”, dbText)– створює поле й присвоює посилання на нього об'єктній змінній Fld.
7) Set ім'я об'єктної змінної = New – створюється новий екземпляр об'єкта.
Після опису об'єктної змінної й присвоєння їй значення ця змінна може бути використана замість прямих посилань на об'єкти й дані. Застосування об'єктних змінних дозволяє спростити текст програми.
Набори записів у таблицях
Після з'єднання з базою даних і відкриття таблиці створюється новий набір записів, і тепер основна робота, проводиться з об'єктом Recordset.
Існує три типи наборів записів:
- табличний тип - визначає основну таблицю або підключену таблицю відкритої бази даних. Дії можуть бути здійснені тільки з набором записів табличного типу;
- динамічний тип - визначає динамічну, віртуальну таблицю, що є результатом роботи запиту. Динамічні набори записів включають поля з різних таблиць. Вони називаються динамічними, тому що є можливість відновлення записів шляхом додавання, редагування й видалення;
- простий тип - аналогічний динамічному з тією відмінністю, що всі записи є статичними, тобто не можна вносити ніякі зміни. Цей тип є найшвидшим і повинен використовуватися, якщо е необхідність тільки переглянути дані.
Властивості об'єкта Recordset
BOF - повертає значення True, якщо позиція поточного запису перебуває перед першим записом.
Bookmark - установлює або повертає значення Variant, що ідентифікує поточний запис.
EOF - повертає значення True, якщо позиція поточного запису перебуває нижче останнього запису.
Filter - повертає або установлює критерій визначення запису, що включається в набір записів.
RecordCount – повертає кількість записів у наборі.
Fields.Count – повертає кількість полів у таблиці.
Fields(i).Name – повертає ім'я i-го поля в таблиці.
Sort - повертає або установлює порядок сортування в наборі записів динамічного й простого типів.
Методи об'єкта Recordset
AddNew - додає новий запис у набір табличних або динамічних записів.
Close - закриває набір даних.
Delete - видаляє поточний запис із набору табличних або динамічних записів.
Update - обновляє набір записів.
Edit - копіює поточний запис набору табличних або динамічних записів у буфер копіювання для подальшого редагування (тільки в DAO).
Move - переміщає покажчик поточного запису на певну кількість записів. Цей метод має наступний синтаксис:
Об'єкт.Move рядок
Об'єкт - об'єкт типу Recordset.
Рядок - змінна типу long integer, що визначає кількість записів, на які слід перемістити положення курсору. Для руху по набору записів у зворотному порядку використовується негативне значення параметра рядок.
MoveFirst, MoveLast, MoveNext, MovePrevious - переміщає поточний запис у першу, останню, наступну або попередню позицію поточного набору записів.
Робота з набором записів таблиці.
Перед написанням програм потрібно відкрити вікно текстового редактора VBA командами Модули Создать. У модулі зробити посилання на бібліотеки доступу до даних DAO і ADO. Для цього виконати команди Tools References і вибрати бібліотеки об'єктів так, як це показано на рис. 3.23.
Рис.3.23 - Вікно посилань для підключення бібліотек.
Приклад 1. Нехай є форма "Товары", створена на основі однойменної таблиці в поточній базі даних. Необхідно підрахувати cумарну вартість кави. Для цього у формі створюється елемент керування з ім'ям Стоимость_кофе й кнопка Расчет стоимости (рис.3.24), під якою потрібно написати програму.
Private Sub Кнопка17_Click()
Dim db As Database
Dim rs As DAO.Recordset
Set db = CurrentDb
Set rs = db.OpenRecordset("Товары")
With rs
.MoveFirst
Me![Стоимость_кофе] = 0
Do While .EOF = False
If .Fields("Марка") Like "Кава*" Then Me![“Стоимость_кофе”] = _
Me![“Стоимость_кофе”] + .Fields("Стоимость товара")
.MoveNext
Loop
End Wtth
End Sub
Рис. 3.24 - Форма “Товары”
Приклад 2. Знайти й вивести на екран номер групи з максимальною кількістю студентів і середнім балом у групі більше 4,7 у таблиці "Группа".
Private Sub Пошук_Номер_Групи()
Dim db As Database
Dim rs As DAO.Recordset, max As Single, n As Variant
Set db = CurrentDb
Set rs = db.OpenRecordset("ГРУППА")
With rs
.MoveFirst
max = .Fields(1)
.MoveNext
Do While .EOF = False
If .Fields(1) > max And .Fields(2) > 4.7 Then max = .Fields(1): n = .Bookmark
.MoveNext
Loop
.Bookmark = n
MsgBox "Кількість студентів - " & max & Chr(13) _
& "Номер групи - " & .Fields(0)
End With
End Sub
Приклад 3. Використовуючи бібліотеку ADO у вікні модуля створити процедуру для заповнення даними поле “Среднее” таблиці “Урожайність” (рис.3.25).
Рис.3.25 - Структура таблиці “Урожайність”
Public Sub Розрахунок_ADO()
Dim connection As New ADODB.connection 'Якщо база днных поточна, те
'цей рядок можна не писати
'Якщо базу даних потрібно відкрити на диску,
' те після цього рядка потрібно писати
'Connection.Open "Provider=Microsoft.Jet.OLEDB.4.0";Data
' Sourse=шлях до файлу"
Dim rs As New ADODB.Recordset
Dim s As Double, i As Integer, n As Long
With rs
.Open "Урожайність", CurrentProject.connection, adOpenKeyset, _
adLockOptimistic
.MoveFirst
Do While .EOF = False
s = 0: n = 0
For i = 1 To .Fields.Count - 2
s = s + .Fields(i): n = n + 1
Next i
s = s / n
.Fields(5) = s
.MoveNext
Loop
End With
End Sub