Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Конспект лекцій ЕКОНОМІЧНА ІНФОРМАТИКА.doc
Скачиваний:
26
Добавлен:
28.10.2018
Размер:
24 Mб
Скачать

3.17. Застосування методу DoCmd у програмах vba

VBA дозволяє створювати процедури, що складаються з одних макрокоманд. Прямі еквіваленти існують тільки для деяких з них. Для виконання макрокоманд використовується метод DoCmd. Структура методу:

DoCmd.макрокоманда [аргумент],...

До макрокоманд, які виконуються із середовища VBA, ставляться такі: ApplyFilter (Застосувати фільтр), Close (Закрити), FindNext (Наступний запис), FindRecord (Знайти запис), HourGlass (Пісочні годинники), Maximize (Розгорнути), Minimize (Згорнути), OpenForm (Відкрити форму), OpenQuery (Відкрити запит), OpenReport (Відкрити звіт), ShowToolBar (Панель інструментів).

Відкриття форми. Для відкриття форми використовується макрокоманда OpenForm. Структура методу DoCmd при цьому така:

DoCmd.OpenForm FormName, View, FilterName, WhereCondition, DataMode, WindowMode, OpenArgs

FormNameім'я форми з поточної бази даних, яку потрібно відкрити.

Viewвизначає тип відкриття форми. Використовується одна з наступних констант: AcNormal – відкриває форму у вигляді Форма (за замовчуванням); AcDesign - відкриває форму у вигляді Конструктор; AcFormDs – відкриває форму у вигляді Таблиця даних.

FilterName – ім'я запиту з поточної бази даних.

WhereConditionSQL-вираз (слово WHERE опускається), що визначає записи, які слід вивести на екран (наприклад, “Країна = ‘Росія' “).

DataMode – визначає режим уведення даних, у якому відкрита дана форма, на основі наступних констант: AcAdd – відкриває форму в режимі Додавання (можна вносити нові записи, але не можна редагувати наявні); AcEdit – відкриває форму в режимі Редагування (можна вносити нові записи й редагувати наявні); AcReadOnly – відкриває форму в режимі Тільки перегляд ( уведення й редагування записів неможливо).

WindowMode – визначає режим вікна, у якому виводиться форма. Використовуються константні значення: AcNormal – відкриває форму у вигляді Звичайний. Використовується за замовчуванням; AcHidden – відкриває форму в прихованому виді; AcIcon – відкриває форму у вигляді згорнутої піктограми.

OpenArgs – строковий вираз, що визначає один або кілька аргументів. Ці аргументи можуть використовуватися в програмі, написаній мовою VBA, як модифікатори відкриття форми.

Приклад 1. Записати процедуру-функцію для відкриття форми “Продажи” і вивести записи, що задовольняють наступним умовам: “Замовлена” - більше 18, “Дата замовлення” – 2005р., Форму відкрити у вигляді Форма. Режим уведення даних – Редагування.

Public Function Форма1()

DoCmd.OpenForm _

FormName:=”Продажи”, _

Wherecondition:=”Замовлено> 18 and year(Дата_Замовлення) =2005”, _

view:=acNormal, _

datamode:=acEdit

End Function

Приклад 2. Є форма Выбор студента” з полем зі списком, де дані міста (рис.3.20). Є форма "Студенты”, де дані міста й прізвища студентів (рис.3.21.) У формі Выбор студента є кнопка “Выбор студента по городу”. У поле зі списком вибирається місто, і, нажавши на кнопку, вибираються тільки ті студенти, хто живе в даному місті. Нижче наведена найпростіша процедура для кнопки.

Private Sub Кнопка3_Click()

DoCmd.OpenForm "Студенты", _

wherecondition:= "[Города]=[Forms]![Выбор студента]![Города]"

End Sub

Рис.3.20 - Форма “Выбор студента”

Рис. 3.21 - Форма “Студенты”

Закриття форми. Для закриття форми використовується макрокоманда Close. Cтруктура методу DoCmd при цьому така:

DoCmd.Close ObjectType, ObjectName, Save

ObjectType – тип об'єкта, що закривається. Для закриття форми використовується аргумент acForm. До інших аргументам відносяться acTable, acQuery, acReport, acMacro, acModule. Якщо цей аргумент упущений, то проводиться закриття активного об'єкта.

ObjectName – ім'я об'єкта, який необхідно закрити.

Save – константа, що визначає процедуру закриття об'єкта, у якому містяться не збережені дані: (пропонує користувачеві зберегти внесені зміни; використовується за замовчуванням), acSaveYes (автоматичне збереження внесених змін), acSaveNo (не зберігати внесених змін).

Приклад 3. Записати процедуру - підпрограму для закриття форми ”Продажиз автоматичним збереженням внесених змін.

Public Sub Закрити ()

DoCmd.Close acForm, “Продажи”, acSaveYes

End Sub

Примітка. Для закриття активного об'єкта досить у програмі написати:

DoCmd.Close

Фільтрація даних у формі

Для фільтрації даних форми використовується макрокоманда ApplyFilter. Cтруктура методу DoCmd при цьому така:

DoCmd.ApplyFilter “ Ім'я фільтра”,”Умова відбору”

Ім'я фільтраім'я запиту;

Умова відбору – вираз SQL без Where.

Приклад 4. У формі “Відділ кадрів” (рис. 3.22) процедура Sub для фільтрації даних по Дата_зачисл така:

Sub Фільтрація_по_даті()

DoCmd.ApplyFilter "", "[Дата_зачисл]>[Введіть дату]"

End Sub

При запуску програми у вікні діалогу виводиться запрошення на уведення дати.

Рис.3.22 - Форма “Відділ кадрів”