Лабораторна робота №7 на тему Робота з об'єктами DAO та Створення модулів, Бази даних та інформаційні системи, ЗНТУ
« НазадЛабораторна робота №7 на тему Робота з об'єктами DAO та Створення модулівМета роботи: навчитися створювати коди програм на VBA, які добавляють та видаляють записи, встановлюють фільтр, відшукують записи, що задовольняють певній умові. 2.1 Деякі теоретичні відомостіDAO (DataAccessObjects) – об’єкти доступу до даних використовуються для керування базами даних з усіх додатків, які підтримують VBA. Для цього в редакторі VBA в меню Tools – References треба підключити бібліотеку об’єктів Microsoft DAO 3.6 Object Library. Для роботи з базою даних можна описувати змінні як об’єкти доступу до даних Database, Recordset, Querydef та ін. Як і для будь-якої об'єктної змінної її треба спочатку оголосити, а тільки потім встановити посилання на об'єкт за допомогою оператора Set. Наприклад, така послідовність команд описує об’єктні змінні dbMyDB та rsRec, а метод OpenRecordsetстворює в активній базі даних об’єкт Recordset – динамічний набір записів на основі даних таблиці tvidom. Dim dbMyDB As Database , rsRec As Recordset Set dbMyDB = CurrentDb Set rsRec = dbMyDB . OpenRecordset ( "tvidom", dbOpenDynaset) Розглянемо деякі властивості та методи об'єкта Recordset.
В динамічному наборі записів новий запис завжди добавляється в кінець набору, тому перейти на нього можна і за допомогою методу MoveLast, і за допомогою закладки Bookmark. В об’єкті Recordset типа таблиці з активним індексом місце нового запису визначається порядком сортування.
Задача 2.1. Створити процедуру, яка добавляє новий відділ до таблиці tvidom. Sub AddRecord ( ) Dim r As Recordset Set r = CurrentDb . OpenRecordset ( " tviddily " , dbOpenDynaset) With r . AddNew ! pidrozdil = InputBox("Введіть відділ") ! tel = InputBox("Введіть телефон") ! shef = InputBox("Введіть прізвище начальника") . Update End With End Sub
Умови для пошуку або фільтру можна записувати власноруч або використовувати метод BuildCriteria. Щоб перевірити, чи знайдено потрібний запис, використовують властивість NoMatch.
BuildCriteria(“поле ”, тип_даних_поля , текстовий_вираз) поле – це ім’я поля, в якому здійснюється пошук, воно записується в лапках (це може бути й функція або вираз рядкового типу); тип_даних_поля – це внутрішня константа Access, VBA, DAO або ADO; використовують одну з таких констант: dbBoolean , dbByte , dbChar , dbCurrency , dbDate , dbInteger , dbLong , dbMemo , dbNumeric , dbSingle , dbText , dbTime текстовий_вираз – це змінна, яка містить зразок для пошуку або сам вираз для пошуку у вигляді текстової константи. Задача 2.2. Знайти в таблиці tvidom прізвище людини, яка народилася до 1970 року (поле dtr – дата народження). Sub Пошук ( ) Dim r As Recordset , strCriteria As String , fam As String Set r = CurrentDb . OpenRecordset ( " tvidom" , dbOpenDynaset) strCriteria = BuildCriteria ( "Year (dtr) " , dbInteger , "<1970" ) r . FindFirst strCriteria If r . NoMatch( ) Then MsgBox " Такої людини немає! " Else fam = r ! fio MsgBox fam End If EndSub Для продовження пошуку треба використати метод FindNext.
Задача 2.3. Підрахувати кількість людей в таблиці tvidom, які народилися раніше 1970 року. Використаємо інший критерій пошуку. Sub кількість( ) Dim r As Recordset , strCriteria As String , n As Integer Set r = CurrentDb . OpenRecordset ( " tvidom" , dbOpenDynaset ) strCriteria = BuildCriteria( "dtr" , dbDate , "<1–1–70") r . Filter = strCriteria Set r = r . OpenRecordset If r . RecordCount > 0 Then r . MoveLast n = r . RecordCount MsgBox " Таких людей – " & Str(n) Else MsgBox " Таких людей немає! " End If EndSub Задача 2.4. Підрахувати кількість чоловіків та жінок в таблиці tvidom. Використаємо класичний алгоритм підрахунку кількості. Sub Стать() Dim r As Recordset , m As Integer, f As Integer Set r = CurrentDb . OpenRecordset (" tvidom", dbOpenDynaset ) m = 0: f = 0 r . MoveFirst Do Until r .EOF If r ! pol = "чоловік" Then m = m + 1 ' m - кількість чоловіків Else f = f + 1 ' f - кількість жінок End If r . MoveNext Loop MsgBox "Чоловіків – " & Str(m) & Chr(13) & "Жінок – " & Str(f) End Sub 2.2 Контрольні питання1) Створення об'єкта Recordset, типи об'єкта. 2) Метод OpenRecordset і його параметри. 3) Методи об'єкта Recordset і їхнє призначення. 4) Властивості об'єкта Recordset. 5) Метод BuildCriteria та його використання. 6) Використання циклів для розрахунків в таблицях. 2.3 Індивідуальні завданняНаписати програми, які відчиняють таблиці як набори записів і виконують такі дії: 1) добавляють новий запис до головної таблиці та заповнюють його даними; 2) відшукують потрібний запис і змінюють дані в ньому; 3) встановлюють фільтр та підраховують скільки записів задовольняють умовам фільтру; 4) вилучають записи з підпорядкованої таблиці, які задовольняють певній умові. З повагою ІЦ "KURSOVIKS"!
|