переглянути за допомогою властивостей Count – кількість, Name – ім’я та Item – значення. Нижче поданий приклад програми для видачі порядкових номерів, імен та значень всіх властивостей форми Oplaty_f.
Option Compare Database
Option Explicit
Private Sub Wlastywosti_formy()
Dim i As Integer
For i = 0 To [Forms]![Oplaty_f].Properties.Count
MsgBox "i= " & i & " " & [Forms]![Oplaty_f].Properties(i).Name & " = " & _
[Forms]![Oplaty_f].Properties.Item(i)
Next i
End Sub
У програмах мовою VBA прийнято писати одну команду в одному рядку. Якщо в одному і тому самому рядку пишеться декілька команд, то вони розділюються між собою двокрапкою. Якщо команда не поміщається в одному рядку, то вона дописується в наступному, тоді в місці розриву ставиться пробіл і символ підкреслювання. У вищенаведеному прикладі так перенесений залишок команди MsgBox.
Застосування методу CloseCurrentDatabase приводить до закриття БД, а Quit – до виходу з MS Access. Нижче подані приклади команд.
Application.CloseCurrentDatabase
Application.Quit
Об’єкт DoCmd дозволяє виконати команду. Розглянемо його окремі методи, це:
Open – відкрити об’єкт;
Приклад. Відкрити таблицю Oplaty_t і представити її до редагування:
DoCmd.OpenTable " Oplaty_t ", acViewNormal, acEdit
FindRecord – пошук запису за зразком.
Приклад. Увідкритій таблиці Platnyky_t знайти і представити до редагування запис, у поточному полі якого міститься значення “Дрозд”:
DoCmd.FindRecord ("Дрозд")
GoToRecord – перехід на запис.
Приклад. Увідкритій таблиці Oplaty_t представити до редагування 4-й запис:
DoCmd.GoToRecord , "Oplaty_t", acGoTo, 4
Метод GoToRecord може містити такі параметри:
acFirst – попередній запис;
acGoTo – заданий запис;
acLast – останній запис;
acNewRec – новий запис;
acNext default – наступний запис;
acPrevious – початок набору даних.
Rename – змінити ім’я об’єкта.
Приклад. Змінити ім’я таблиці Platnyky_t на Klienty:
DoCmd.Rename "Klienty", acTable, "Platnyky_t"
RunSQL – виконати запит (вираз SQL).
Приклад 1. Знищити всі записи відкритої таблиці Fondy_t, поле Naz_f яких містить значення “Майорка”:
S = "DELETE * FROM Фонди WHERE Naz_f='Майорка'"
DoCmd.RunSQL S
Приклад 2. У всіх записах відкритої таблиці Fondy_t змінити значення поля Naz_f на “Гаваї”, якщо воно дорівнює “Канари”:
p = "UPDATE Fondy_t SET Naz_f = 'Гаваї' WHERE Naz_f = 'Канари'"
DoCmd.RunSQL p
RunMacro – виконати макрос.
Приклад. Виконати макрос Perewirka:
DoCmd.RunMacro "Perewirka"
Close – закрити об’єкт.
Приклад. Закрити таблицю Oplaty_t з занесенням у пам’ять виконаних змін:
DoCmd.Close acTable, "Oplaty_t", acSaveYes
Quit – вихід з MS Access та закриття всіх його вікон.
Об’єкт Recordset призначений для обробітку наборів даних. Набір даних представляє собою таблицю, яка містить дані з однієї або декількох таблиць. Цей об’єкт є найбільш вживаним для програмного редагування таблиць. Його оголошення має вигляд:
Dim нд As New ADODB.Recordset
Тут нд – ім’я набору даних, змінна об’єктного типу.
У процесі розвитку VBA об’єкт (контейнер) Recordset був розроблений у декількох варіантах, з них два останні – стандартів DAO i ADO підтримуються версією MS Access 2002. Стандарт ADO новіший, його об’єкти мають назви попередника, але дещо змінені властивості, кількість та типи параметрів методів, внесені нові додаткові засоби, зокрема, для роботи з зовнішніми даними, такими, наприклад, як масмедіа. Якщо використовується стандарт ADO, то при оголошенні набору даних необхідно додавати описувач ADODB.
Об’єктній змінній нд можна присвоїти значення об’єкта за допомогою команди Set:
Set нд = New ADODB.Recordset
Нижче подані окремі методи набору даних.
Open служить для відкриття набору даних, його застосування має вигляд:
нд.Open "Джерело", назва з’єднання з БД, параметри
Приклад. Створити та відкрити набір даних aRS на основі таблиці Oplaty_t:
aRS.Open "Oplaty_t", CurrentProject.Connection, adOpenKeyset, adLockOptimistic
Тут CurrentProject.Connection – з’єднання з поточним проектом. Параметри визначають тип курсора та умови колективного доступу до набору даних. Курсор – допоміжна (скрита) таблиця, яка служить у якості хранилища набору даних.
Перечислимо та коротко охарактеризуємо окремі методи
AddNew – додати запис.
Delete(adAffectCurrent) – знищити запис (поточний);
Move(k) – перейти на k-й запис;
Update – змінити дані, перенести їх у таблицю-джерело;
Filter– фільтрація набору даних за умовою;
Close – закрити набір даних;
Set нд = Nothing – звільнення пам’яті, яку займає закритий набір даних.
Властивості Recordset:
Name – ім’я набору даних;
Type – тип набору даних;
CursorType – тип курсора;
Edit – редагування набору даних;
Bof, Eof – початок, кінець набору даних;
RecordCount– кількість записів;
нд(“ім’я поля”).Value – значення поля;
нд(№ поля).Value – значення поля (варіант), № починається з 0;
нд.Fields(№ поля).Value – значення поля (варіант), № починається з 0;
AbsolutePosition– № поточного запису.
Об’єкт Err. Властивості об’єкта Err можна використати для програмної обробки помилок, зокрема:
Number – номер помилки;
Description – системне повідомлення;
AccessError() – масив системних повідомлень.
Масив системних повідомлень містить короткі описи помилок англійською або російською мовою. Їх можна переглянути за допомогою програми:
Option Compare Database
Option Explicit
Sub Zmist_pomylok()
Dim i As Integer
For i = 1 To 50000
MsgBox "№: " & i & "Текст помилки: " & AccessError(i)
Next i
End Sub
Для видачі повідомлень державною мовою варто створити їх масив. У прикладі, текст якого поданий нижче, застосувується масив Powidomlen(5000) для обробки заздалегідь помилкової команди. Відомо, що команда DoCmd.FindNext в даній програмі приведе до виникнення помилки з кодом 2143, яка видає на екран повідомлення: “Не был указан образец поиска в команде НайтиЗапись”. Його замінено на: “В даній ситуації команда пошуку запису недопустима”
Option Compare Database
Option Explicit
Private Sub Demo_pomylky()
Dim Powidomle(5000) As String
Powidomle(2143) = "В даній ситуації команда пошуку запису недопустима"
On Error GoTo r
DoCmd.FindNext ‘Заздалегідь недопустима команда, відсутнє джерело даних
x: Exit Sub
r: MsgBox " Помилка: " & Powidomle(Err.Number)
Resume x
End Sub
Засоби MS Access для створення модулів. Для складання модулів у вікні База Даних слід вибрати об’єкт Модулі. Після натискання на кнопку Створити, одержимо вікно – інтерфейс редактора VBA, готовий