- •Робота в субд Access
- •6.030601 Менеджмент організацій
- •1 Лабораторна робота № 6
- •1.1 Робота з майстром звітів
- •1.2 Робота з Конструктором звітів
- •2 Лабораторна робота № 7
- •2.1 Деякі теоретичні відомості
- •3.1 Створення форм
- •Лабораторна робота № 9
- •4.1 Робота з формами
- •2.3 Індивідуальні завдання
- •3 Лабораторна робота №8
- •1.7 Індивідуальні завдання
- •4.3 Індивідуальні завдання
- •Література
1.2 Робота з Конструктором звітів
Відкриємо створений звіт в режимі Конструктора (див. рис.1.5). Замінимо запропонований формат виведення кварталу на такий:
=Format$ ( [dat] ; "Квартал " & " q , yyyy " & " рік" )
Замінимо англійські підписи українськими, вилучимо зайві підсумки, змінимо розмір шрифтів, тощо.
Заголовок використовується для розміщення підписів. Їхнє розташування залежить від користувача. Група може навіть не мати заголовку. Примечание группы використовується для виведення підсумків.
Щоб добавити (вилучити) Заголовок / примечание отчета, треба в меню Вид встановити (зняти) позначку на цьому пункті.
Для того, щоб у звіті (див. рис.1.4) прізвище одного робітника не виводилось багато разів, можна перенести це поле з області даних до заголовку групи fio, або залишити поле на місці, але встановити для нього у вікні властивостей Не выводить повторы значення Да.
Рисунок 1.5 – Конструктор звіту
Конструктор дозволяє відміняти та добавляти рівні угруповання. Для цього треба в меню Вид обрати пункт Сортировка и группировка. Відкриється вікно (див. рис.1.6). Щоб добавити рівень угруповання, треба вибрати поле зі списку або ввести вираз і встановити значення Да для однієї або обох властивостей Заголовок та Примечание группы. Для кожного рівня вказується порядок сортування.
До розділів звіту можна вставляти рисунки з файлів. Для цього використовують меню Вставка, пункт Рисунок.
Рисунок 1.6 – Рівні угруповання звіту
Меню Файл – Экспорт дозволяє здійснювати експорт звітів до MS Word в форматі rtf (rich text format), до текстових файлів, до файлів HTML із вибором кодування. Проте для розміщення інформації в мережі Internet можна створювати й Сторінки доступу до даних.
2 Лабораторна робота № 7
Тема роботи: Робота з об'єктами DAO. Створення модулів.
Мета роботи: навчитися створювати коди програм на VBA, які добавляють та видаляють записи, встановлюють фільтр, відшукують записи, що задовольняють певній умові.
2.1 Деякі теоретичні відомості
DAO (Data Access Objects) – об’єкти доступу до даних використовуються для керування базами даних з усіх додатків, які підтримують 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.
Update – зберігає зміни, зроблені в об'єкті Recordset за допомогою методів AddNew та Edit.
Edit – копіює до буферу поточний запис об'єкта Recordset та робить можливим його змінення. Після завершення змін треба викликати метод Update для збереження запису в об'єкті Recordset. Якщо метод Update не викликати, то внесені зміни будуть скасовані без попередження і до бази даних не запишуться.
AddNew – створює і добавляє новий запис. Можна записати до нього якісь дані, проте поточний запис не зміниться. Щоб перейти на новий запис, можна використати властивість Bookmark, а саме надати їй значення LastModified.
В динамічному наборі записів новий запис завжди добавляється в кінець набору, тому перейти на нього можна і за допомогою методу MoveLast, і за допомогою закладки Bookmark. В об’єкті Recordset типа таблиці з активним індексом місце нового запису визначається порядком сортування.
Bookmark – визначає закладку, яка запам’ятовує номер поточного запису в об'єкті Recordset, а потім використовується для повернення в об'єкті Recordset на той самий запис.
MoveFirst, MovePrevious, MoveNext, MoveLast – методи роблять поточним перший, попередній, наступний або останній записи об'єкта 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
FindFirst, FindPrevious, FindNext, FindLast – використовуються для пошуку записів, які задовольняють вказаним умовам. Ці методи роблять активними перший, попередній, наступний або останній запис, для яких виконуються умови, відповідно.
Умови для пошуку або фільтру можна записувати власноруч або використовувати метод BuildCriteria. Щоб перевірити, чи знайдено потрібний запис, використовують властивість NoMatch.
NoMatch – властивість, яка має значення True, якщо потрібний запис не знайдений, і False, якщо знайдений.
Filter – задає або повертає значення фільтру. Правила запису критерію для фільтру такі ж самі, як і для команд пошуку.
BuildCriteria – метод утворює рядок символів, який має вигляд критерію для пошуку або фільтру. Синтаксис:
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
End Sub
Для продовження пошуку треба використати метод FindNext.
Close – закриває відкритий об'єкт доступу до даних.
Delete – вилучає поточний запис в об'єкті Recordset.
RecordCount – кількість записів, до яких був здійснений доступ в об'єкті Recordset. Властивість не показує скільки записів міститься в об'єкті Recordset доки не буде виконане звернення до всіх записів. Після звернення до останнього запису з набору записів значення властивості стає рівним повному числу не видалених записів в об'єкті Recordset.
Задача 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
End Sub
Задача 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
