Використання макросів у базі даних Microsoft Access. Макроси в access Розшифровка значень виразів під час створення макросу access

У попередніх уроках було розглянуто об'єкти баз даних: таблиці, запити, форми та звіти. Для розширення функціональних можливостействорюваних Вами додатків за допомогою СУБД Access розглянемо технологію створення таких об'єктів як макроси та модулі.

Почнемо з макросів. Макроси - це невеликі програми мовою макрокоманд СУБД Access, що з послідовності певних команд (одної чи кількох макрокоманд). Набір макрокоманд у Access дуже широкий. Макроси є найпростішими засобами автоматизації процесів над об'єктами Access. Необхідно відзначити, що макроси легко створювати і для цього не потрібно знати синтаксис мови програмування.

Отже, для створення макросу відкриємо базу даних Training_students_O і переключимося на вкладку Макрос (скриншот вікна БД представлений на малюнку 1).


Рис. 1.

Щоб створити новий макрос, треба натиснути кнопку Створити, відкриється вікно конструктора макросів.



Рис. 2.

У цьому вікні треба вибрати макрокоманду зі списку, клацнувши на кнопці відкриття списку макрокоманд. У списку налічується близько 50 різних макрокоманд для виконання дій.



Рис. 3.

Спочатку виберемо макрокоманду зі списку, наприклад макрокоманду "Відкрити Запит", яка відкриває будь-який запит, а потім виберемо ім'я запиту з усіх існуючих запитів поточної бази даних, наприклад "Успішність студентів". Далі необхідно зберегти створений макрос під унікальним ім'ям, наприклад "Откр_запрос".



Рис. 4.

Закриємо вікно конструктора макросів.



Рис. 5.

Потім запустимо макрос, клацнувши на кнопці "Запуск" або двічі клацнувши на макросі "Откр_запрос", в результаті макрос виконає всі дії, які записані в ньому, тобто. відкриє запит на вибірку "Успішність студентів".



Рис. 6.

Цей макрос можна змінити, наприклад, виконати в одному макросі кілька дій, для цього треба відкрити макрос у режимі конструктора та додати потрібні дії.

Macros може бути розташований в макрооб'єктах (котрих можна назвати standalone macros), або вони можуть бути внесені до інших властивостей форм, reports, або controls. Embedded macros become part of the object або control в яких вони є embedded. Macro objects are visible in the Navigation Pane, under Macros; embedded macros are not.

Будь-який макрос є зроблений з одного або більше дійових дій. Залежно від контексту ви працюєте, деякі макроекономічні рішення не можуть бути використані для використання.

Macro Builder

Тут є деякі основні почуття високоголіга Macro Builder.

    Action Catalog Macro actions є organized by type and searchable.

    IntelliSenseКоли висловлюють expressions, IntelliSense suggests можливі значення і гроші ви можете скористатися одним.

    Keyboard shortcutsВикористовуйте клавіші комбінації для професійного, електронного macro writing.

    Program flowСтворити більше readable macros with comment lines and groups of actions.

    Conditional statements Allow for more complex logic execution with support for nested If/Else/Else If.

    Macro reuse The Action Catalog відтворює інші макроси, які ви створили, повідомляючи, що ви робите в одному з них.

    Easier sharing Copy a macro, це paste його як XML в email, newsgroup post, blog, або code sample web site.

Тут's video that walks you through the main areas of the Macro Builder.

Create a standalone macro

Цей процес creates a standalone macro object that will appear under Macrosв Navigation Pane. Standalone macros є useful when you want to reuse the macro in many places of the application. Ви можете повідомити про макрос від інших макросів, ви можете ніби duplicating той самий код в multiple places.

Create an embedded macro

Цей процес створюється як макрос, що є введеним в будь-яку особливість предмета. Such a macro does не appear в Navigation Pane, but can be called from events such as On Load or On Click.

Тому, що макрос стає частиною форми або повідомлення об'єкта, embedded macros є recommended for automating tasks, що є специфічним для конкретної форми або повідомлення.

Add actions to a macro

Діяльність є окремими командами, які надходять до макро, і будь-який нагадує, що це, для прикладу, FindRecord or CloseDatabase.

Step 1: Browse or search for macro action

The first step in adding an action is finding it in the Add New Action drop-down list or in the Action Catalog.

    By default, the Add New Action drop-down list and the Action Catalog тільки відтворення дій, які будуть execute в не-trusted databases. To see all actions:

    • On the Design tab, in the Show/Hide group, click Show All Actions.

    If the Action Catalog is not displayed, on the Design tab, in the Show/Hide group, click Action Catalog.

Для того, щоб вирішити рішення, використовуючи один з наступних методів:

    Click the arrow in the Add New Action drop-down list, and scroll down to find the action. Program flow elements є аркушами першої, і вони є макроінформаційними літерами.

    Browse for action в Action Catalog Pane. The actions are grouped by category. Expand всі категорії для перегляду дій. Якщо ви натисніть на дії, на короткий опис дій події на кінці твору Catalog.

    Search for the action in the Action Catalog pane by typing in the Search box на top of the pane. Як ви є типом, список рішень, які ви filtered до показу всіх макросів, що міститься в тому, що текст. Access searches з макро наклейками і їхніми дописами для тексту ви знайдете.

Step 2: Add an action to a macro

Після того, як ви зробите макроінформацію, ви хочете, щоб прийняти одну з цих методів:

    Select an action in the Add New Action list, або just begin typing the action name в box. Access adds the action at the point where the Add New Action list був displayed.

    Drag the action from the Action Catalog to the macro pane. An insertion bar appears to show you where the action will be inserted when you release the mouse button.

    Double-click the action in the Action Catalog.

    • Якщо акція selected in the macro pane, Access adds the new action just below the selected one.

      If a Group, If, Else If, Else, or SubmacroБлок is selected in the macro pane, Access adds the new action to that block.

      Якщо не діяти або блокувати selected in the macro pane, Access adds the new action to the end of the macro.

      • Якщо ви збираєтеся створювати один або більше макросів, вони будуть розраховані під In this Database node in the Action Catalog.

        • Dragging a standalone macro (one that is listed under Macros) into the macro pane creates a RunMacro action that runs the macro you dragged in. Ви можете використовувати папір вниз до call submacros, якщо present.

          Якщо ви збираєтеся завантажити рішення від standalone macro into current macro (instead of creating a RunMacro action), right-click it in the Action Catalog, and then click Add Copy of Macro.

          Dragging an embedded macro (одне те, що міститься під формою або повідомленням об'єкта) в macro pane copies the actions from that macro into the current macro.

      • Ви можете створювати дії, спрямовані на редагування вашого 데이터베이스 object from the Navigation Pane to the macro pane. Якщо ви клацніть table, query, form, report, або module to macro pane, Access adds an action that opens the table, query, form, or report. Якщо ви збираєтеся інше макрос в macro pane, Access adds an action that runs the macro.

Step 3: Fill in arguments

Most macro actions require at least one argument. Ви можете прочитати їхній argument за допомогою дій і переміщення речей за ними. Для багатьох думок, ви можете вибрати значення від drop-down list. Якщо ви думаєте, що ви думаєте про тип, як ви бачите, IntelliSense helps ви можете дати відповідь на можливі значення як вашого типу, як показано на наступному рисунку:

Якщо ви можете зазначити, що ви будете використовувати, встановіть його для того, щоб розповсюдити його за допомогою двома-натисніть або використовувати клавіші за допомогою кнопок до високого освітлення і за допомогою клавіш TAB або ENTER.

Для більш докладної інформації про створення зображень, статей Introduction to expressions .

About using IntelliSense with properties in web databases

Якщо ви створюєте стиснуті UI макро на веб-формативній формі, IntelliSense дозволить вам додати будь-яку особливість до виразу. However, in a web database, тільки subset form properties може бути accessed by using UI macros. Для того, щоб керувати control named Control1 on form named Form1, IntelliSense will let you add !!. до an expression in a UI macro. However, якщо ви збираєтеся до Database до Access Services, macro containing that expression will generate an error when it is run on the server.

Наступні таблиці показують властивості, які ви можете використовувати в UI macros в web databases:

Properties that you can use

Caption, Dirty, AllowAdditions, AllowDeletions, AllowEdits

Caption, Visible, Fore Color, Back Color

Visible, Enabled

Caption, Visible, Enabled, Fore Color

Enabled, Visible, Locked, Fore Color, Back Color, value

Visible, Back Color

Enabled, Visible, Locked, Value

Enabled, Visible, Locked, Value

Enabled, Visible Locked

Navigation Control

Enabled, Visible

Move an action

Дія є executed in order, з верхнього до краю macro. Щоб перейти до дії або знизу в макросі, використовуючи одну з наступних методів:

    Драгати діяти або вниз, де ви хочете.

    Виберіть функцію, а потім натисніть CTRL + UP ARROW або CTRL + DOWN ARROW.

    Виберіть the action, and then click the Move Up or Move Down arrow on the right side of the macro pane.

Delete an action

To delete a macro action:

    Виберіть функцію, а потім кнопки DELETE. Абсолютно, ви можете click the Delete(X) button на правій стороні macro pane.

    • Якщо ви delete a block of actions, such as an If block or a Group block, всі рішення в блокі є deleted as well.

      The Move up, Move down, and DeleteКомбінації є також наявні на шорти menu, що з'являється, коли ви можете прямо-click a macro action.

Control program flow with If, Else If, ​​and Else

Для виконання macro actions only when certain conditions are true, use an If block. This replaces the Condition column that was used in earlier versions of Access. Ви можете extend an If block with Else If and Elseблоки, подібні до інших sequential programming мовами як VBA.

The following illustration shows a simple If block, including Else If and Else blocks:

The Ifблок executes if the ExpirationDate field is less than the current date.

The Else Ifблок executes if the ExpirationDate field is ekval to the current date.

The Elseблоки executes, якщо не зробили попередні блоки do.

The If block ends here.

Add an If block to a macro

    Select If from the Add New Action drop-down list, або drag it from the Action Catalog pane to the macro pane.

    In the box at the top of the If block, type an expression that determines when the block will be executed. The expression must be Boolean (that is, one that evaluates to eyther Yes or No).

    Add actions to the If Add New Action drop-down list that appears within the block, or by dragging them from the Action Catalog pane to the If block.

Add Else or Else If blocks to an If block

    Select the If block , and then on the lower right corner of the block, click Add Else or Add Else If.

    If you are adding an Else If block, type an expression that determines when the block will be executed. The expression must be Boolean (that is, one that evaluates to either True or False).

    Add actions to the Else If or Else block by selecting them from the Add New Action drop-down list that appears within the block, або dragging them from the Action Catalog pane to the block.

    • The commands to add If, Else If, and Elseблоки є наявними на шорти мішки, які з'являються, коли ви можете прямо-click a macro action.

      Ifблоки можуть бути неприйняті до 10 рівнів глибин.

Create submacros

Each macro може contain multiple submacros. A submacro is designed be called by name from the RunMacro or OnError macro actions.

You add a Submacro block to a macro in the same way that you a macro action, as described in the section . Once you have added a Submacro block, you can drag macro actions into it, або select actions from the Add New Action

    You can also create a Submacro block by selecting one or more actions, right-clicking them, and then selecting Make Submacro Block.

    Submacros must always be the last blocks in a macro; Ви не можете додати будь-які дії (за винятком інших submacros) нижче за submacro. Якщо ви збираєтеся, що тільки contains submacros без specifically naming submacro you want, тільки перші submacro will run.

    Щоб повідомити про submacro (для example, in event property, or by using the RunMacro action or OnError action), використовуючи наступні syntax:

    Group related actions together

    Ви можете вдосконалити readability of macro by grouping actions together and assigning a meaningful name to the group. Для прикладу, ви можете скористатися групою дій, які Open і Filter формують в групі названий “Open and Filter Form.” Це робить це, щоб дізнатися, що рішення є відповідними для всіх інших. A Group block does not affect how the actions є executed, and the group cannot be called or run individually. Це першорядне використання є для написання групи рішень, щоб допомогти вам підтвердити, що ви робите це. У додатку, коли editing alarge macro, ви можете з'єднати кожну групу блоку донизу до однієї лінії, зменшуючи розмір скрутки ви маєте.

    Якщо ви збираєтеся вирішити, що в групі є утилізація в макрос, використовуйте цю процедуру, щоб знайти її Group block:

    1. Select the actions that you want to group.

      Right-click the selected actions, and then click Make Group Block.

      In the box at the top of the Group

    If the actions are not already present:

      Drag the Group block from the Action Catalog to the macro pane.

      In the box at the top of the Group block, type a name для групи.

      Drag macro actions від Action Catalog into the Group block, або select actions from the Add New Action list that appears within the block.

    Group blocks can contain other Groupблоки, і може бути неприйнятою до maximum of 9 levels deep.

    Expand and collapse macro actions or blocks

    Якщо ви створили новий макрос, макробудівник відображає macro actions with all arguments visible. Залежно від розміру макросу, ви можете ввести в collapse деякі або всі рішення макросу (і блоки рішень), коли ви editувати макрос. Це робить це засобом, щоб отримати overall view of structure of your macro. Ви можете expand some or all of the actions as needed to edit them.

    Expand or collapse a single macro action or block

      Click the plus ( + ) or minus ( - ) sign to the left of the macro or block name. Власне, натисніть UP ARROW and DOWN ARROW keys для вибору пункту або блок, а потім кнопки LEFT ARROW or RIGHT ARROW keys до collapse or expand it.

    Expand or collapse all macro actions (but not blocks)

      On the Design tab, in the Collapse/Expand group, click Expand Actions or Collapse Actions.

    Expand or collapse all macro actions and blocks

      On the Design tab, in the Collapse/Expand group, click Expand All or Collapse All.

    Tip:Ви можете “peek” всередині a collapsed action by moving the pointer over the action. Access displays the action arguments in a tooltip.

    Copy and paste macro actions

    Якщо ви потребуєте вирішення дій, які ви повинні бути надіслані до макро, ви можете завантажити і закривати існуючі дії, які ви збираєтеся з текстом в текстовому тексті. Якщо ви paste actions, вони є внесені just below the currently selected action. Якщо блок є вибраним, ці кроки будуть включені до блоку.

    Share a macro with others

    Коли ви збираєтеся макровирішення до clipboard, вони можуть бути зроблені як Extensible Markup Language (XML) в будь-якому application that accepts text. Це сподобається вам, щоб зробити макрос для електронної пошти за допомогою електронної пошти, або повідомити про макрос на дискусії, blog, або інший веб-сайт. Відповідь може завантажити XML і завантажити його в свій Access 2010 Macro Builder. The macro is recreated just as you wrote it.

    Run a macro

    Ви можете скористатися макросом за допомогою будь-яких методів:

      Double-click the macro в Navigation Pane.

      Call the macro by using the RunMacro or OnError macro action.

      Enter the macro name в an Event property of an object. The macro will run when that event is triggered.

    Debug a macro

    Якщо ви маєте проблеми, які дають змогу скористатися макрою, є кілька інструментів, які ви можете скористатися джерелом проблеми.

    Add error-handling actions to a macro

    Ви повинні повідомити про error handling actions на всіх макросах, як ви збираєтеся, і веде їх в макросному режимі. Якщо ви використовуєте цей спосіб, Access displays descriptions of errors as they occur. Відповідь про помилку, яка дає змогу помилитися, що ви можете скористатися проблемою більше.

    Використовуйте такі процедури, як add an error-handling submacro to a macro:

      Submacro from the Add New Action drop-down list.

      In the box just to the right of the word Submacro, type a name for submacro, such as ErrorHandler.

      From the Add New Action drop-down list that appears within the Submacro block, select the MessageBox macro action.

      In the Message box, type the following text: =.

      На кінці з макро, select OnError from the Add New Action drop-down list.

      Set the Go to argument to Macro Name.

      In the Macro Name box, тип name of your error-handling submacro (in this example, ErrorHandler).

      Drag the OnError macro action до the very top of the macro.

    Наступні ілюстрації shows a macro with the OnError action and a Submacro that is named ErrorHandler.

    The OnError macro action is placed at the top of the macro, and calls the ErrorHandler submacro in the event of an error.

    The ErrorHandler submacro only runs if it is called by the OnError action, і displays a message box that describes the error.

    Use the Single Step command

    Single Step є макросйомним режимом, що ви можете використовувати для виконання одного кроку на час. Після того, як будь-яке рішення виконано, dialog box appears, що відображають інформацію про дії, і будь-який error codes що трапляється як результат. Але, тому що не є описом error в макс.

    Перейти до наступного режиму:

      Open the macro in Design view.

      On the Design tab, in the Tools group, click Single Step.

      Save and close the macro.

    Next time you run the macro, the Macro Single Step dialog box appears. The dialog box displays the following information about each action:

      Condition (for If blocks)

    • Error Number (an error number of 0 means no error occurred)

    As you step through the actions, click one of the три buttons в the dialog box:

      Для того, щоб дізнатися про те, що наступне рішення в макро, press Step.

      У вівторок macros, що є поточно running, click Stop All Macros. Мобільний крок може бути в результаті найближчого часу ви збираєтеся на макро.

      Для виконання Single Step mode and continue running the macro, click Continue.

      • If you press StepПісля останньої дії в макрос, перший крок режиму буде слід в результаті поточного часу ви збираєтеся на макро.

        Натисніть 1 Step Mode while a macro is running, press CTRL+BREAK.

        Натисніть Single Step mode at a specific point in a macro, add the SingleStep macro action at that point.

        Single Step mode is not available in a Web database.

    Convert a macro to VBA code

    Macros дає змогу повідомити про те, що є в Visual Basic for Applications (VBA) programming language. Якщо ви вирішили, що потрібна більша функціональність, ніж макрос може здійснювати, ви можете напевно встановити значок макропроцесора в VBA code, і вони можуть використовуватися для розширеного характеру set that VBA provides. Keep in mind, however, that VBA code will not run in a browser; any VBA code that you add to a Web database will only run when the database is open in Access.

    Note:Ви можетеконвертувати embedded macros to VBA code.

    Візьміть на VBA code:

      У Navigation Pane, праворуч натисніть на макрооб'єкт і натисніть Design view.

      On the Design tab, in the Tools group, click Convert Macros на Visual Basic.

      In the Convert macro dialog box, specify whether you want error handling code and comments added to the VBA module, and then click Convert.

    Access confirms that the macro was converted, and opens the Visual Basic Editor. Double-click the Converted Macro в Project pane to view and edit the module.

Розділ 11.

Робота з макросами

Основний набір засобів Microsoft Access, який ми розглядали у попередніх розділах книги, орієнтований на користувачів, які не володіють мовами програмування. Для програмістів до цих засобів додані макроси(невеликі програми мовою макрокоманд системи Access) та модулі(процедури мовою Visual Basic for Application, VBA). З їх допомогою можна суттєво розширити функціональні можливості створюваного вами додатка та налаштувати його на потреби конкретних користувачів. У цьому розділі ми познайомимося з одним із цих засобів - макросами та однією з мов програмування Access - мовою макрокоманд. З модулями та мовою VBA ми вас познайомимо вгол. 13,

Отже, ми обговорюватимемо такі питання:

  • Поняття макросу
  • Використання макросів у додатках-
  • Створення макросів та груп макросів
  • Завдання умов управління процесом виконання макроса
  • Різні способи запуску макросів
  • Поради щодо налагодження макросів
  • Обробка подій у формах та звітах за допомогою макросів
  • Перетворення макросів на процедури VBA

Використання макросів у базі даних Microsoft Access

За допомогою макросів можна виконати практично всі дії над об'єктами Access з тих, що були описані в попередніх розділах.

Макрос в Access є структурою, що складається з однієї або декількох макрокоманд, які виконуються або послідовно, або в порядку, заданому певними умовами. Набір макрокоманд в Access дуже широкий, за допомогою макросів можна реалізувати багато з того, що дозволяють зробити процедури на VBA. Кожна макрокоманда має певне ім'я та, можливо, один або кілька аргументів, які задаються користувачем. Наприклад, при використанні макрокоманди Відкрити Форму (OpenForm) як аргументи необхідно задати, принаймні, ім'я форми, що відкривається, і режим виведення її на екран.

У табл. 11.1 міститься список макрокоманд Microsoft Access 2002, згрупованих за категоріями: робота з даними у формах та звітах; виконання команд, макросів, процедур та запитів; робота з об'єктами; імпорт/експорт даних та об'єктів та інші. У категорію "Інші" зібрані всі макрокоманди, які дозволяють впливати на інтерфейс програми.

Таблиця 11.1. Макрокоманди Microsoft Access 2002

Призначення

Макрокоманда

Робота з даними у формах та звітах

Відбір даних

Застосувати Фільтр (ApplyFilter)

Переміщення за даними

НаступнийЗапис (FindNext) ЗнайтиЗапис (FindRecord) КЕлементуУправління (GoToControl) На сторінку (GoToPage)

Оновлення даних або екрану

Оновлення (Requery) ПоказатиВсіЗаписи (ShowAllRecords)

Виконання

Виконання команди

Виконати Команду (RunComraand)

Виконання макросу, процедури чи запиту

ЗапускМакросу (RunMacro) Залуск Програми (RunCode) Відкрити Запит (OpenQuery) 3anycк 3anpoca SQL (RunSQL)

Виконання іншої програми

Запуск Програми (RunApp)

Переривання виконання

Скасувати Подія (CancelEvent) Зупинити УсіМакроси (StopAllMacros) ЗупинитиМакрос (StopMacro)

Вихід із Microsoft Access

Вихід (Quit)

Імпорт експорт

Передача об'єктів Microsoft Access до інших програм

Вивести У Форматі (OutputTo) НадіслатиОб'єкт (SendObject)

Перетворення формату даних

Перетворити БазуДаних (Transfer Database) ПереносБазиДанихSQL (TransferSQLDat abase) Перетворити ЕлектроннуТаблицю (Transfer Spreadsheet) ПеретворитиТекст (TransferText)

Робота з об'єктами

Копіювання, перейменування та збереження об'єкта

КопіюватиОб'єкт (CopyObject) Копіювати Файл БазиДаних (CopyDatabase File) Перейменувати (Rename) Зберегти (Save)

Інші

Виведення на екран або приховування вбудованої або спеціальної панелі інструментів

Подача звукового сигналу

Панель Інструментів (ShowToolbar) Сигнал (Вієр)

Як видно з цієї таблиці, події, які можуть бути виконані за допомогою макросів, дуже різноманітні. Навіть якщо ви не використовуватимете макроси у своїх додатках, має сенс вивчити ці макрокоманди, оскільки їх можна використовувати і в процедурах VBA, як буде показано далі (Див. гл. 13).

Порівняно з попередньою версією Access, у Microsoft Access 2002 з'явилися три нові макрокоманди:

Перенесення Бази даних SQL (TransferSQL Database) - переносить базу даних Microsoft SQL Server 7.0 і вище на інший сервер;

Копіювати файл бази даних (CopyDatabaseFile) - виконує копіювання поточної бази даних Microsoft SQL Server 7.0 і вище, приєднаної до проекту Access;

Відкрити Функцію (OpenFunction) - виконує функцію, визначену користувачем, у проекті Access. Ця функція являє собою запит, який, використовуючи вхідні параметри, повертає результати так само, як і процедура, що зберігається.

Використання макросів є виправданим тим, що їх легко створювати, і для цього не потрібно вивчати синтаксис мови програмування. Як буде показано в наступному розділі, для створення макросу потрібно знати лише основні прийоми роботи в Microsoft Access та Windows, такі як перетягування об'єктів із вікна База даних(Database) у спеціальне вікно - Конструктор макросів(Macro Design), вибір дії зі списку та введення виразів як аргументи макрокоманди. Тому, якщо дуже не хочеться вивчати синтаксис мови VBA або це дуже важко, сміливо застосовуйте макроси, і ви отримаєте досить функціональну програму.

Як мовилося раніше вище, основне призначення макросів - це створення зручного інтерфейсупрограми: щоб форми та звіти відкривалися при натисканні кнопок у формі або на панелі інструментів або звичним вибором команди меню; щоб при відкритті програми користувач бачив на екрані не вікно База даних(Database), наповнене безліччю таблиць, запитів, форм та звітів, а якусь зрозумілу форму, з допомогою якої можна було б одночасно виробляти бажані дії тощо.

За допомогою макросів можна створити зручні меню та панелі інструментів для програми, і трохи пізніше ми опишемо, як це зробити.

Однак використання макросів має деякі недоліки, про які тут доречно сказати.

  • Можливості макрокоманд обмежені в порівнянні з можливостями мови VBA, тому в ряді випадків без програмування на VBA не обійтися, хоча спочатку потрібно бути впевненим, що ці додаткові можливості справді потрібні. Мова VBA надає більш широкі можливості для роботи з даними, дозволяє використовувати механізм програмування об'єктів для зв'язку з іншими програмами, викликати функції бібліотек динамічного завантаження (DLL) Windows і створювати власні спеціалізовані функції.
  • Макроси можна використовувати практично скрізь, де застосовуються процедури VBA, проте процедури VBA зазвичай виконуються швидше.
  • Макроси є об'єктами, що існують окремо від форм та звітів, у яких вони використовуються, тому, коли цих об'єктів стає дуже багато, їх підтримка є досить трудомісткою. Процедури обробки подій VBA є невід'ємною частиною форм та звітів, і в цьому є переваги. Наприклад, при перенесенні форм та звітів з однієї бази даних до іншої з ними автоматично переносяться пов'язані процедури.

Тим не менш, як уже зазначалося, у багатьох випадках використання макросів цілком виправдане, тому що це суттєво спрощує та прискорює розробку програми. За допомогою макросів можна створювати невеликі однокористувацькі додатки, хоча при створенні розрахованих на багато користувачів або клієнт-серверних додатків, де швидкість роботи програми критична, краще застосовувати VBA.

Створення макросів

У Microsoft Access існує спеціальний засіб для створення макросів – Конструктор макросів (Macro Design). Розглянемо процес створення макросу з допомогою Конструктора.

Конструктор макросів

Відкрити вікно Конструктор макросів(Macro Design) для створення нового макросу можна двома способами:

  1. Розкрийте список макросів у вікні База даних(Database), клацнувши лівою кнопкою миші по ярлику Макроси(Macros), та натисніть кнопку Створити(New) у верхній частині вікна (рис. 11.1).
  2. Клацніть по стрілці вниз на кнопці Новий об'єкт(New Object) на панелі інструментів База даних(Database) та виберіть елемент Макрос(Macro).

Вікно Конструктора макросів побудоване аналогічно до вікна Конструктора таблиць, тобто розділено по горизонталі на дві частини: панель описів і панель аргументів.

Верхня частинавікна Конструктора – панель описів – складається з декількох стовпців. За замовчуванням на цій панелі виводиться два стовпці: "Макрокоманда"(Action) та "Примітка" (Comments). Панель описів дозволяє визначити послідовність макрокоманд, у тому числі складається макрос.

Рядок у стовпці "Макрокоманда" (Action) є полем зі списком, в якому можна вибрати потрібну макрокоманду.

Рядок у стовпці "Примітка" (Comments) - це звичайне текстове поле, в яке можна ввести коментар, що описує виконувану дію.

Коли поле "Макрокоманда" (Action) заповнено, у нижній частині вікна Конструктора макросів з'являється панель аргументів, призначена для введення значень аргументів відповідної макрокоманди. Список полів на цій панелі залежить від обраної макрокоманди і може бути відсутнім, якщо макрокоманда не має аргументів. Таким чином, при створенні макросів не потрібно запам'ятовувати список аргументів кожної макрокоманди.

На рис. 11.1 показано вибір макрокоманди Застосувати Фільтр (ApplyFilter). На панелі аргументів є два поля, які дозволяють задати ім'я фільтра та умову відбору записів. Для того, щоб задати умову відбору записів, можна скористатися Побудовачем виразів (див. Розд. "Створення виразів за допомогою Побудовника виразів" гл. 4).

Рис. 11.1. Конструктор макросів та панель аргументів

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

Зауваження

Для швидкого перемикання між панелями описів та аргументів, так само як під час роботи з таблицями та запитами в режимі Конструктора, можна використовувати клавішу .

Існує ще один дуже простий спосіб уведення макрокоманди. Допустимо, потрібно створити макрос, який повинен відкривати форму "Клієнти" (Customers) у додатку "Борей" (Northwind). Для цього у вікні База даних(Database) необхідно клацнути по ярлику Форми(Forms), потім, використовуючи панель інструментів (спосіб 2), відкрити вікно Конструктор макросів(Macro Design) і перетягніть за допомогою миші форму "Клієнти" (Customers) у полі "Макрокоманда" (Action) вікна Конструктора макросів.

Порада

Для зручності перетягування об'єктів з вікна База даних (Database) у форму виберіть команду Вікно, Ліворуч (Window, Tile Vertically), щоб розташувати вікна на екрані поряд.

Тоді в полі "Макрокоманда" (Action) автоматично з'явиться макрокоманда Відкрити Форму (OpenForm) (рис. 11.2), а на панелі аргументів автоматично заповняться поля: у полі "Ім'я форми" (Form Name) з'явиться ім'я форми "Клієнти" (Customers), у полі "Режим" (View) - значення за замовчуванням Форма (Form), у полі "Режим вікна" (Window Mode) - значення Звичайне(Normal). Інші поля залишаться порожніми. Ми можемо в цій макрокоманді задати фільтр для відбору записів. Для цього введемо в полі "Ім'я фільтра" (Filter Name) ім'я якогось фільтра, наприклад "Менеджери з продажу", який ми будували під час вивчення запитів (див. Розд. "Створення запиту з фільтра" гл. 4).

Крім того, можна зробити записи в цій формі недоступними для змін, навіщо в полі Режим даних(Data Mode) необхідно ввести значення Тільки читання(Read Only).

Рис. 11.2. Автоматичне створення макрокоманд шляхом перетягування об'єктів

Аналогічно можна створювати макрокоманди, перетягуючи з вікна База даних(Database) таблиці, запити, звіти та інші макроси. При цьому у вікні Конструктора макросів з'являтимуться відповідні макрокоманди: Відкрити Таблицю (ОрепТаblе), Відкрити Запит (OpenQuery), Відкрити Звіт (OpenReport), Запуск Макроса (RunMacro).

Для введення аргументів макрокоманди найчастіше потрібно вибирати значення зі списків або вводити вирази. Для введення виразів можна скористатись Побудовником виразів, кнопка якого знаходиться праворуч від поля аргументу. Ще одна кнопка Побудовника виразів знаходиться на панелі інструментів. Як і інших випадках, перед виразом потрібно ставити знак рівності (=). Винятки становлять аргумент Вираз(Expression) макрокоманди ЗадатиЗначення (Setvalue) та аргумент Число повторень(Repeat Count) макрокоманди-Запуск Макроса (RunMacro). Якщо ввести знак рівності перед виразом, що задає значення цих аргументів, воно буде обчислюватися двічі, що може призвести до небажаних результатів.

Якщо в якості аргументу макрокоманди необхідно задати ім'я об'єкта бази даних, то його можна або ввести за допомогою клавіатури, або вибрати зі списку, або вказати назву об'єкта, перетягнувши його з вікна бази даних.

Отже, створена нами макрокоманда відкриватиме форму "Клієнти" (Customers) у режимі Лише читання (Read Only) та показуватиме в ній тільки менеджерів з продажу. Як було зазначено раніше, макрос може містити послідовність з кількох макрокоманд. Тому в цьому ж макросі в наступному рядку ми виберемо макрокоманду Повідомлення (MsgBox), яка після відкриття форми відображатиме діалогове вікно з повідомленням про те, які клієнти представлені у формі. Для цього введемо у поле Повідомлення(Message) на панелі аргументів текст повідомлення, наприклад Встановлено фільтр Менеджери з продажу, решту поля можемо залишити без зміни. Аргумент Сигнал(Віяло) визначає, чи буде виведення повідомлення супроводжуватися звуковим сигналом. Аргумент Тип(Турі) визначає вид діалогового вікна повідомлення. Аргумент Заголовок(Title) дозволяє встановити текст, який буде виведений у заголовку вікна повідомлення.

Якщо база даних велика, відбір записів у формі може зайняти деякий час, тому рекомендується вивести на екран курсор у формі піщаного годинника, який показуватиме, що йде обробка даних. Для того щоб зробити це, скористаємося макрокомандою Пісочний Годинник (Hourglass). Макрокоманди в макросі виконуються в тій послідовності, в якій вони записані в стовпці "Макрокоманда" (Action), тобто зверху донизу. Макрокоманду Пісочний Годинник (Hourglass) слід поставити першою, тому що курсор повинен змінитися перед виведенням форми. Таким чином, нам потрібно вставити новий рядок на панелі описів. Для цього встановимо курсор у перший рядок панелі та натисніть кнопку Додати рядки(Insert Rows) на панелі інструментів або просто клавішу . З'явиться пустий рядок. У цьому рядку в полі "Макрокоманда" (Action) виберемо макрокоманду Пісочний Годинник (Hourglass). У полі "Увімкнути" (Hourglass On) панелі аргументів з'явиться значення Так (Yes), встановлене за замовчуванням, що нам потрібно. Щоб повернути початковий вид покажчику миші, в кінці створеного макросу потрібно ввести таку саму макрокоманду Пісочний Годинник (Hourglass), але зі значенням Ні (No) аргументу увімкнути(Hourglass On).

Власне, цю макрокоманду краще поставити перед макрокомандою виведення повідомлення екран. Зробити це просто, оскільки макрокоманди легко змінюються місцями з допомогою миші. Щоб поміняти дві останні макрокоманди місцями, виділіть останній рядок, клацнувши лівою кнопкою миші по області виділення рядків (ліворуч у вікні Конструктора) і перетягніть рядок вгору. Горизонтальна лінія показує місце нового положення рядка. Відпустіть кнопку миші, коли ця лінія опиниться над передостаннім рядком.

Тепер залишається лише зберегти створений макрос. Для цього можна вибрати меню Файл(File) команду Зберегти як(Save As) або натиснути клавішу . З'явиться вікно збереження макросу. Введіть ім'я макросу в поле введення, дотримуючись правил іменування об'єктів Access, наприклад Менеджери з продажу.

Зауваження

У Microsoft Word та Excel є засоби автоматичного запису макросів. Ці засоби дуже зручні для вивчення VBA, оскільки дозволяють автоматично створити процедуру, увімкнувши запис макросу, виконавши необхідні дії та зупинивши запис. Тоді всі дії користувача, які виконуються після включення запису і до його зупинки, перетворюються на текст процедури VBA. Потім цей текст можна переглянути та редагувати за допомогою редактора VBA. У Microsoft Access засобів автоматичного запису макросів немає так само, як і засобів автоматичної генерації коду VBA (за винятком того, що створюють майстри).

Створення груп макросів

При розробці програми з використанням макросів кількість макросів може бути дуже великою. Тому важливо добре організувати доступ до потрібних макросів. Для цього в одному об'єкті Макрос(Macro) можна поєднати кілька макросів. Наприклад, рекомендується всі макроси, пов'язані з подіями у формі або звіті, об'єднати в окремий об'єкт, який відповідає даній формі або звіту. Для того, щоб можна було це зробити, кожен макрос групи повинен мати своє ім'я, а ім'я об'єкта Макрос(Macro) буде ім'ям групи макросів.

Щоб створити групу макросів:

  1. Відкрийте Конструктор макросів одним із тих способів, які були описані у попередньому розділі.
  2. Натисніть кнопку Імена макросів(Macro Name) на панелі інструментів. На панелі описів у вікні Конструктора з'явиться ще один стовпець - Ім'я макросу (Macro Name) (рис. 11.3).
  3. У цей стовпець введіть ім'я першого макросу. Інші поля даного рядка краще залишити порожніми - це полегшить переміщення та копіювання макрокоманд.
  4. Починаючи з наступного рядка, введіть всі макрокоманди макросу та відповідні аргументи кожної макрокоманди.
  5. Пропустіть один рядок.
  6. Повторіть кроки 3-5 кожного макросу.

Рис. 11.3.Створення групи макросів

На рис. 11.З у вікні Конструктора представлений макрос "Співробітники" (Employees) бази даних "Борей" (Northwind). Для вказівки кінця макросу не потрібно окремої макрокоманди. Access продовжує виконання макросу, що входить до групи, доки не виявить рядок, що містить ім'я в стовпці "Ім'я макросу" (Macro Name), або поки не дійде до останнього рядка вікна макросів.

При обробці макросу порожні рядки ігноруються, тому їх зручно використовуватиме розділення макросів у групі. Цей прийом, а також введення коментарів для складних макросів, що складаються з великої кількості макрокоманд, дозволяє покращити читання макросів.

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

Зауваження

Можна настроїти систему так, щоб стовпець Ім'я макросу(Macro Name) виводився завжди у Конструкторі макросів. Для цього необхідно встановити відповідні параметри на вкладці Вид(View) у діалоговому вікні Параметри(Options) (див. розділ "Налаштування параметрів програми Access" гл. 14).

У прикладах макросів, які наводили раніше, використовувався послідовний порядок виконання макрокоманд. Однак, як і в будь-якій програмі,строк виконання макрокоманд в макросі може бути змінений. І тому вводяться умови виконання чи пропуску макрокоманд. Ці умови задаються у вигляді виразів у спеціальному стовпці, який з'являється у вікні Конструктора макросів, якщо натиснуто кнопку Умови(Conditions) на панелі інструментів (рис. 11.4).

Зауваження

Як і у випадку з групами макросів, можна настроїти параметри системи таким чином, щоб цей стовпець з'являвся у Конструкторі макросів завжди.

Рис. 11.4. Застосування умов у макросах

На рис. 11.4 наведено вікно Конструктора для групи макросів "Наклейки для "клієнтів" (Customer Label Dialog), яка використовується для друку звіту у вигляді наклейок на конверти. Причому можна надрукувати наклейки відразу для всіх клієнтів або для клієнтів однієї країни, вибраної зі списку. У вікні видно Якщо умова, задана в цьому стовпці, істинно, виконується макрокоманда, що знаходиться в цьому рядку Якщо умова помилкова, відповідна макрокоманда пропускається і виконується наступна.

Якщо потрібно при істинності умови виконати відразу кілька макрокоманд, то для всіх макрокоманд, крім першої, в стовпці "Умова" (Condition) ставиться крапка (...). Умова, яка має перевірятися, пишеться у рядку першої макрокоманди. Тоді, якщо воно істинно, виконується весь набір макрокоманд від цієї умови до наступної макрокоманди із заданою умовою, до наступного макросу або до кінця макросу. Якщо умова помилкова, пропускаються всі команди,позначені трьома крапками, включаючи макрокоманду із заданою умовою. Далі виконується макрокоманда, що йде за пропущеними, в якій міститься нова умова або поле "Умова" (Condition) не заповнено. Таким чином, на відміну від більшості мов програмування, в макросах немає альтернативного розгалуження. Для того щоб створити макрос з двома альтернативними гілками, потрібно спочатку ввести умову та визначити макрокоманди, що виконуються при виконанні цієї умови. Відразу після них необхідно вказати зворотну умову та визначити макрокоманди, що виконуються в альтернативній галузі, потім можна ввести макрокоманди, які виконуються безумовно. Перегляд(Preview) у цій формі. Якщо користувач вибрав варіант для всіх країн(АН Countries), що визначається значенням 1 елемента керування ДрукНаліпок(PrintLabelFor), звіт відкривається в режимі Попереднього перегляду і форма закривається. Якщо вибрано перемикач для конкретної країни(Specific Country)", а країна не вибрана (значення поля зі списком "Вибір Країни" (SelectCountry) не задано), то видається повідомлення, фокус встановлюється в полі зі списком для вибору країни і виконання макросу припиняється. Якщо країна задана, відображається звіт для обраної країни та форма закривається.

У цьому макросі використовується макрокоманда Зупинити Макрос (StopMacro). Вона дозволяє припинити виконання макросу, при цьому всі макрокоманди, що йдуть по порядку за макрокомандою Зупинити Макрос (StopMacro), не виконуватимуться.

Зауваження

Макрокоманду Зупинити Макрос (StopMacro) має сенс використовувати тільки якщо за нею йдуть інші макрокоманди, які не слід виконувати за певної умови. Як було зазначено вище, для вказівки кінця макросу спеціальної макрокоманди непотрібен.

Виконання та налагодження макросів

Способів запуску макросів дуже багато. У тому числі є прямі методи, коли макрос запускається безпосередньо користувачем. Ці методи використовуються зазвичай при тестуванні макросів. Коли макрос налагоджений, створюють спеціальну команду меню або кнопку на панелі інструментів або пов'язують макрос з подією у формі або звіті. У цьому розділі ми розглянемо всі можливі способизапуск макросу.

Універсальним способом запуску макросу є використання команди меню (Tools, Macro, Run Macro) (рис. 11.5).

У діалоговому вікні, що з'явилося при виборі цієї команди, потрібно вказати (ввести або вибрати зі списку) повне ім'я макросу, тобто ім'яГрупи.ім'яМакросу (рис. 11.6). Цей спосіб дозволяє виконати макрос з будь-якого активного вікна, будь то вікно макросів, вікно бази даних або, наприклад, Конструктор форм.

Рис. 11.5.

Рис. 11.6. Діалогове вікно Запуск макросу

Запуск макросу з вікна Конструктора макросів

Цей спосіб застосовується для тестування щойно створеного чи виправленого макросу. Якщо макрос у вікні Конструктора макросів один, то для його запуску потрібно просто натиснути кнопку Запуск(Run) на панелі інструментів або вибрати команду Запуск, За кроками(Run, Single Step) ( останній спосібдозволяє налагодити макрос). Однак, якщо макросів кілька, то за допомогою цієї кнопки чи команди можна запустити лише перший макрос у групі. Щоб запустити будь-який інший макрос із групи, потрібно скористатися командою меню Сервіс, Макрос, Виконати макрос(Tools, Macro, Run Macro).

Якщо ви часто використовуєте цей спосіб запуску макросу, є сенс налаштувати панель інструментів, додавши на неї стандартну кнопку Запуск(Run Macro). Вона еквівалентна виконанню команди меню Сервіс, Макрос, Виконати макрос(Tools, Macro, Run Macro). (0 налаштування панелей інструментів див. розділ. "Створення та зміна панелей інструментів" гл. 14.)

Запуск макросу з вікна бази даних

Щоб запустити макрос із вікна База даних(Database), клацніть по ярлику Макроси(Macros) на панелі об'єктів, знайдіть у списку потрібний макрос і двічі клацніть на ньому кнопкою миші або натисніть кнопку Запуск(Run) на панелі інструментів вікна База даних.Останній спосіб підходить тільки якщо у вибраному об'єкті міститься один макрос. Інакше потрібно скористатися універсальним способом виконання макросу, описаним вище.

Зауваження

Якщо в умовах або аргументах макрокоманд є посилання на об'єкти Access - форми, звіти тощо - вони повинні бути відкриті перед запуском макросу, в іншому випадку будуть видаватися повідомлення про помилки.

Запуск макросу за допомогою кнопки на панелі інструментів

Прямі способи запуску макросів є простими, але не найшвидшими. Існують більш зручні та швидкі способи. Найбільш зручний на наш погляд спосіб запуску макросу - це створення спеціальної кнопки на панелі інструментів. Правда, стандартних панелей інструментів у Access багато, і в різних режимах роботи на екрані з'являються панелі. Тому найрозумнішим є створення спеціальної панелі інструментів, на яку ви можете помістити всі потрібні кнопки. Проте операція додавання спеціальної кнопки на стандартну панель інструментів є надзвичайно простою.

Щоб додати кнопку на стандартну панель інструментів Access:

  1. Клацніть правою кнопкою миші на панелі інструментів та виберіть у контекстному меню команду Налаштування(Customize).
  2. Налаштування(Customize) розкрийте вкладку Панелі інструментів(Toolbars).
  3. Встановіть прапорець для однієї зі стандартних панелей інструментів, наприклад Запит у режимі таблиці(Query Datasheet), щоб вона відображалась на екрані.
  4. Закрийте діалогове вікно Налаштування(Customize), натиснувши кнопку Закрити(Close).
  5. Клацніть по ярлику Макроси База даних(Database) та знайдіть потрібний макрос.
  6. Перетягніть макрос за допомогою миші на панель інструментів Запит у режимітаблиці (Query Datasheet).

Рис. 11.7. Створення кнопки на панелі інструментів для запуску макросу

Зауваження

Якщо основний режим роботи у вашій програмі - робота з формами, кнопки виконання макросів можна помістити на панель інструментів Режим форми(Form View).

Щоб видалити з екрана панель інструментів, на яку ви щойно додали кнопку, клацніть правою кнопкою миші в області панелей інструментів та у списку стандартних панелей команд зніміть прапорець ліворуч від назви панелі (мал. 11. 8).

Рис. 11.8. Контекстне меню зі списком панелей команд

Тепер розглянемо створення спеціальної панелі інструментів та розміщення на ній кнопки виклику макросу.

  1. Клацніть по ярлику Макроси(Macros) на панелі об'єктів у вікні База даних(Database) та виділіть потрібний макрос.
  2. Виберіть команду Сервіс, Макрос, Створити панель інструментів із макросу (Tools, Macro, Create Toolbar з Macro). На екрані з'являється пуста панель інструментів.
  3. Перетягніть за допомогою миші потрібний макрос на цю панель.

На панелі з'являється кнопка з знайомим значком макросу. Кнопка отримує таку саму назву, як ім'я макросу, для якого вона створена.

Якщо потрібно створити панель інструментів для виклику кількох макросів, ми рекомендуємо об'єднати ці макроси в одну групу (створення групи макросів описано в попередньому розділі). Тоді під час виконання команди меню Сервіс, Макрос, Створити панель інструментів із макросу(Tools, Macro, Create Toolbar from Macro) буде створено панель інструментів, де кожному макросу групи відповідатиме своя кнопка. При цьому на кнопках відображаються імена відповідних макросів. Нова панель інструментів отримує таке саме ім'я, як ім'я групи макросів. Спробуйте виконати цю команду для однієї з груп макросів у базі даних "Борей" (Northwind), наприклад, "Клієнти" (Customers). За бажанням можна замінити текст на кнопки значками. Додаткова інформація про налаштування панелей інструментів програми, і, зокрема, про видалення кнопок з панелей та видалення самих панелей, зміну виду цих кнопок, представлена ​​в розд. "Створення та зміна панелей команд" гол. 14.

Запуск макросу за допомогою команди меню

Ще одним поширеним способом запуску макросу є запуск за допомогою спеціально створеної команди меню. Способи створення команд меню для запуску макросів дуже схожі на ті, що використовуються для створення кнопок на панелі інструментів. Наприклад, можна скористатися для цього командою меню Сервіс, Макрос, Створити меню з макросу(Tools, Macro, Create Menu from Macro).

Більш докладно створення та налаштування меню користувача розглядаються в розд. "Створення та зміна панелей команд" гол. 14.Тому в цьому розділі ми не розглядатимемо створення команди меню з макросу.

Запуск макросу за допомогою комбінації клавіш

Для запуску макросу можна призначити комбінацію кнопок. Для цього необхідно створити спеціальну групу макросів – "AutoKeys". Ця група макросів повинна кожної призначеної вами комбінації клавіш містити макрокоманду запуску відповідного макросу. Приклад групи макросів "AutoK"eys наведено у базі даних "Борей". Відкрийте цю групу макросів у режимі Конструктора. Вона містить один макрос (рис. 11.9). Ім'я макросу- це запис комбінації клавіш +

Сам макрос складається з однієї макрокоманди Запуск Макрос (RunMacro), яка запускає макрос "Телефони клієнтів. Друк" (Customer Phone List.Print). Макрос "AutoKeys" переглядається щоразу, коли користувач вводить спеціальні комбінації клавіш, наприклад +

Якщо введена комбінація клавіш знайдено в AutoKeys, то запускається відповідний макрос.

Рис. 11.9. Приклад макросу "AutoKeys"

Цей спосіб запуску макросу, безумовно, є найшвидшим, проте має істотний недолік: вільних комбінацій клавіш дуже небагато. І хоча комбінації, визначені в AutoKeys, мають більш високий пріоритет, ніж стандартні (наприклад, +- Копіювати), замінювати стандартне призначення комбінацій клавіш не рекомендується. Дозволені комбінації клавіш наведено в табл. 11.2. Комбінації із клавішею в даному випадку не застосовуються, тому що використовуються для запуску команд меню та натискання кнопок.

Таблиця 11.2. Дозволені комбінації клавіш

Позначення

Комбінації клавіш

^А або ^4

+ літера або + цифра

(F1)

Будь-яка функціональна клавіша

^(F1)


+ (F1)

+ будь-яка функціональна клавіша

(Insert)


A (Insert)

+

+(Insert)

+

(Delete) або (Del)


^( Delete) або ^(Dе1)

+

+(Delete) або +(Del)

+

Запуск макросу під час відкриття бази даних

При відкритті бази даних Microsoft Access можуть виконуватись деякі дії. Найчастіше це відкриття спеціальної форми, так званої Головної кнопкової форми, виведення спеціальних меню або панелей інструментів, приховування стандартних менюі т. д. Для визначення цих дій використовується діалогове вікно Параметри запуску(Startup). Однак іноді потрібно, щоб запустити програму, зробити більш складний набір дій, ніж той, що дозволяє задати це діалогове вікно. Наприклад, може знадобитися заздалегідь відкрити кілька форм (не показуючи їх на екрані), щоб потім їхнє відображення не мало багато часу, перевірити деякі умови або запросити введення деяких даних. Все це можна зробити за допомогою спеціального макросу, який називається AutoExec. При відкритті бази даних Access перевіряє наявність цього макросу і, якщо існує, виконує його. При створенні макросу AutoExec слід пам'ятати, що Access спочатку виконає дії, визначені у вікні Параметри запуску(Startup), а потім - макрос "AutoExec", тому в них не повинно бути суперечливих дій.

Запуск макросу з іншого макросу

Іноді необхідно викликати макрос з іншого макросу. Це можна зробити за допомогою макрокоманди Запуск Макрос (RunMacro). Ми вже зустрічалися з цією макрокомандою в описі макросу "AutoKeys". Тут слід зазначити, що ця макрокоманда має три аргументи: крім імені макросу, задається кількість повторів виконання макрокоманди та умова повтору. Отже, ця макрокоманда дозволяє організовувати цикли. Аргумент Число повторів(Repeat Count) визначає кількість викликів макросу. Аргумент Умова повтору(Repeat Expression) є виразом, який може набувати значення Істина або Брехня. Перед виконанням макрокоманди Запуск Макросу (RunMacro) перевіряється значення цього виразу. Якщо воно Істина, то макрос виконується, якщо Брехня, то макрос не виконується і керування передається наступній макрокоманді. Якщо ці два аргументи не задані, макрос виконується лише один раз. Якщо обидва ці аргументи задані, цикл виклику припиняється, коли макрос виконався задане число разів або коли задана умова виявиться невиконаним і отримає значення Брехня.

Зауваження

Ім'я макросу в аргументі макрокоманди ЗапускМакросу (RunMacro) має бути повним, тобто має вигляд ім'яГрупи. Ім'я Макроса, навіть якщо викликаний макрос знаходиться в тій же групі, що і викликає. Якщо умова повтору поставлено в такий спосіб, що завжди істинно, то цикл виявиться нескінченним. Можна перервати його за допомогою комбінації клавіш +. Якщо це не допоможе, доведеться перервати роботу Access, натиснувши комбінацію клавіш ++.

Призначення макросу події

Найбільш часто макроси використовуються в програмі Access для обробки подій. Подія -це будь-яка дія, що розпізнається об'єктом, і можна визначити реакцію об'єкта на подію. Події відбуваються в результаті дій користувача, виконання інструкцій VBA або генеруються системою. Прикладом подій єся виведення на екран форми, звіту, введення даних у текстове поле, натискання кнопки миші чи клавіші. Кожній з цих подій можна призначити макрос або процедуру VBA, які автоматично виконуватимуться у відповідь на подію. Майже все програмування в Access зводиться до написання макросів чи процедур, що обробляють події, т. е. програмується реакція об'єктів на події. Існує велика кількість різноманітних подій, на які реагують об'єкти, причому часто виникає не одна, а ціла послідовність подій. Тому необхідно мати певне вміння, щоб вирішити, якій події слід призначити створений вами макрос або процедуру VBA. Усі тонкощі цього вибору будуть обговорюватися у розд. "Програмування у формах та звітах" гол. 13.Тут ми опишемо лише спосіб призначення макросу події та наведемо приклади обробки подій за допомогою макросів.

Почнемо із найпростішого. Відкриємо форму "Клієнти" (Customers) у базі даних "Борей". У цій формі відображається інформація про клієнта. Припустимо, ми хотіли б бачити не тільки цю інформацію, а й дані про куплені клієнтом продукти. Було б добре створити кнопку Замовлення клієнта,при натисканні якої з'являлася б форма "Замовлення" (Orders) із замовленнями тільки того клієнта, який у Наразіобраний у формі "Клієнти" (Customers). Для того, щоб отримати бажане, створимо макрос, який виконуватиметься, коли відбудеться подія Натискання кнопки(On Click) у формі "Клієнти" (Customers).

Щоб створити макрос, який визначає описану реакцію програми на подію Натискання кнопки(OnClick):

  1. Відкрийте форму "Клієнти" (Customers) у режимі Конструктора.
  2. Створіть кнопку в області форми. При цьому кнопка майстра на панелі елементів повинна бути віджата, тому що вам буде запропоновано створити процедуру обробки подій, а не макрос.
  3. Відкрийте вікно властивостей щойно створеної кнопки, якщо воно ще не відкрито, та відкрийте вкладку Події(Event).
  4. Зверніть увагу, скільки різних подій пов'язане лише з кнопкою команд. Крім звичайного натискання, яке ми зараз і будемо використовувати, в набір подій кнопки входять отримання і втрата фокусу, подвійне клацання кнопкою миші, просте переміщення вказівника миші над кнопкою тощо. Така різноманітність подій дає розробнику великі можливості створення зручного інтерфейсу користувача. Тепер знайдіть у списку подію Натискання кнопки(On Click) і встановіть курсор у відповідний осередок. Це поле зі списком, і зараз воно порожнє. Якщо відкрити цей список, то його першим елементом буде [Процедура обробки подій](), а далі йде перелік усіх макросів, що існують у додатку (рис. 11.10).
  5. Оскільки потрібного нам макросу у списку немає, давайте його створимо. Для цього натисніть кнопку Побудовача, що знаходиться праворуч від поля. З'явиться вікно Побудовник(Choose Builder), в якому пропонується обрати один із трьох Побудовників: Вирази(Expression Builder), Макроси(Macro Builder) та Програми(Code Builder) (рис. 11.11).
  6. Виберіть Макроси(Macro Builder) та натисніть кнопку ОК.Відкриється вікно макросів та діалогове вікно, в яке потрібно ввести ім'я створюваного макросу. Введіть ім'я Замовлення клієнта.

Рис. 11.10. Діалогове вікно властивостей кнопки

Рис. 11.11. Діалогове вікно Побудовник

  1. У макрос потрібно додати єдину макрокоманду Відкрити Форму (OpenForm). Значення аргументів цієї макрокоманди наведено у табл. І.З.

Таблиця 11.3. Значення аргументів макрокоманди ВідкритиФорму (OpenForm)

Аргумент

Значення

Ім'я форми (Form Name)

Замовлення (Orders)

Режим (View) Форма (Form)
Умова відбору (Condition) [КодКлієнта] = ! [Клієнти]! [КодКлієнта]
Режим даних (Data Mode) Лише читання (Read Only)
Режим вікна (Window Mode)
Звичайне (Normal)

Аргумент Режим(View) визначає режим, у якому форма має бути відкрита. Він може приймати значення: Форма(Form), Конструктор(Design), Перегляд(Print Preview), Таблиця(Datasheet), Зведена таблиця(PivotTable) та Зведена діаграма(Pivot Chart). Аргумент Умова відбору(Condition) визначає умову для відбору записів, що відображаються у формі. Умова є вираз. В даному випадку цей вираз містить посилання на елемент керування КодКлієнта(CustomerlD) у формі "Клієнти" (Customers), що дозволяє вибративсі записи з таблиці "Замовлення" (Orders), у яких код клієнта дорівнює значенням, заданим у полі "КодКлієнта" (CustomerID) форми "Клієнти" (Customers). (Докладніше про використання посилань у макросах і висловлюваннях буде розказано в розд. "Застосування макросів" цього розділу.)Аргумент Режим даних(Data Mode) визначає спосіб роботи з даними і може приймати одне із значень: Додавання(Add), Зміна(Edit) або Тільки читання(Read Only). І нарешті, аргумент Режим вікна(Window Mode) визначає тип вікна: Звичайне(Normal), Невидиме(Hidden), Значок(Icon) та Вікно діалогу(Dialog).

  1. Закрийте вікно макросу, Зберігши зміни. У вікні властивостей кнопки у полі Натискання кнопки(On Click) з'явиться ім'я макросу "Замовлення клієнта".
  2. Розкрийте вкладку Макет (Format) та введіть у поле Підпис(Caption) Назва кнопки: Замовлення клієнта. Те саме ім'я рекомендується ввести в поле Ім'я(Name) на вкладці Інші(Other).

Тепер залишається перейти в режим Форми та перевірити, як макрос відпрацьовує подію Натискання кнопки(On Click). Якщо ви ніде не помилилися, то маєте побачити на екрані картинку, схожу на ту, що зображена на рис. 11.12.

Рис. 11.12. Форма "Замовлення"

Проте ми виконали не всі необхідні дії. Якщо перейти до наступного запису у формі "Клієнти" (Customers), дані у формі "Замовлення" (Orders) вже не будуть правильно відображати ситуацію - вони не змінюються. Потрібно зробити так, щоб ці дані змінювалися синхронно з переходом до інших записів у формі "Клієнти" (Customers) або щоб це вікно просто зачинялося. Розглянемо реалізацію другого варіанта. Форма "Замовлення" (Orders) відкривається, коли ми натискаємо кнопку Замовлення клієнта,і стає активною. Потрібно зробити так, щоб вона зачинялася, коли активною стає форма "Клієнти" (Customers). Для цього потрібно вибрати відповідну подію та задати процедуру або макрос її обробки. Якщо ви відкриєте вікно Властивості(Properties) форми "Клієнти" (Customers) та розкриєте вкладку Події(Event), то серед багатьох подій побачите подію Увімкнення(On Activate). Це якраз та подія, яка нам потрібна. Виберемо цю подію, але тепер ми не створюватимемо нову групу макросів, а додамо новий макрос до групи макросів "Клієнти" (Customers), яка вже містить макроси для форми "Клієнти" (Customers). Виберіть цю групу макросів у списку, що розкривається, і натисніть кнопку Побудовача. Відкриється вікно, в якому з'являться два макроси. Додамо до них ще один макрос. Назвемо його "Закриття" та введемо макрокоманду Закрити (Close) з відповідними параметрами (табл. 11.4). Але перед закриттям форми необхідно перевірити, чи вона відкрита. Для цього скористаємося функцією isLoaded, яка повертає значення Істина, якщо форма відкрита, і Брехня - інакше. В якості аргументу на функцію isLoaded необхідно передати ім'я форми. Отже, у стовпець Умова(Condition), навпроти макрокоманди Закрити (Close), введіть IsLoaded("Замовлення") (або IsLoaded ("Orders")).

Таблиця 11.4. Значення аргументів макрокоманди Закрити (Close)

Аргумент

Значення

Тип об'єкта (Object Type)

Форма (Forms)

Ім'я об'єкта (Object Name) Замовлення (Orders)
Збереження (Save)
Ні (No)

Аргумент Збереження(Save) дозволяє визначити, чи Access при закритті форми відображатиме діалогове вікно для підтвердження збереження змінених даних. Оскільки ми відкривали форму "Замовлення" (Orders) в режимі тільки для читання, зміна даних заборонена, тому даному аргументу необхідно надати значення Ні(No). Готовий макрос показано на рис. 11.13.

Закрийте вікно макросу, зберігши зміни. Змініть ім'я макросу, призначеного для події Увімкнення(On Activate). Для цього виберіть у списку або введіть ім'я Клієнти.Закрити (Customers.Close) та натисніть клавішу . Тепер збережіть форму, перейдіть в режим Форми та перевірте, як працюють створені вами макроси.

Рис. 11.13. Макрос для закриття форми

Виклик макросу із процедури VBA

Як ми вже говорили, процедури VBA та макроси в Access є об'єктами близькими та часто взаємозамінними, тобто замість макросу можна використовувати процедуру VBA та навпаки. Існують способи запуску макросу з процедури VBA, запуску процедури VBA з макросу, крім того, Access дозволяє перетворити макрос на процедуру VBA. Таке перетворення описано в розд. "Перетворення макросів у процедури VBA" цього розділу.

Для запуску процедури VBA з макросу існує спеціальна макрокоманда Запуск Програми (КіпСоdе). Ця макрокоманда має один аргумент - ім'я викликаної процедури, хоча може викликатися тільки функція, а не підпрограма.

Для запуску макросу з процедури VBA застосовується спеціальний метод ЗапускМакросу (RunMacro) об'єкта DoCmd, наприклад:

DoCmd.RunMacro "Макрос!".

Об'єкт DoCmd використовується у процедурі VBA для виконання макрокоманд Access. При цьому англійське ім'я потрібної макрокоманди має бути зазначене як Метод об'єкта DoCmd, наприклад рядок процедури

DoCmd.OpenForm "Клієнти"

дозволяє відкрити форму "Клієнти". Тут "Клієнти" - аргумент макрокоманди. Аргументи перераховуються у реченні DoCmd через кому. У такий спосіб може бути виконано більшість макрокоманд.

Створення процедур VBA ми розглянемо нижче, гол. 13.

Налагодження макросів та пошук помилок

Зазвичай для налагодження макросу його виконують у покроковому режимі. Щоб увімкнути цей режим, необхідно натиснути кнопку За кроками(Single Step) на панелі інструментів у вікні Конструктора макросів або вибрати команду меню Запуск, За кроками(Run, Single Step). Тоді перед виконанням кожної макрокоманди з'являтиметься діалогове вікно Покрокове виконання макросу(Macro Single Step) (рис. 11.14).

У цьому вікні відображаються ім'я макросу, ім'я макрокоманди, що виконується, умова її виконання та аргументи. При цьому у полях Умова(Condition) та Аргументи(Arguments) видно значення умовного висловлювання та аргументів макрокоманди. Якщо в рядку макрокоманди умова не вказана, у полі Умова (Condition) завжди буде відображатися значення Істина(True). Кнопки праворуч від полів у цьому вікні дозволяють виконати чергову макрокоманду, перервати виконання макросу (наприклад, якщо видно, що аргументи неправильно обчислені) і продовжити виконання в звичайному режимі, тобто не по кроках.

Рис. 11.14. Діалогове вікно Покрокове виконання макросу

Якщо в процесі виконання макросу виникла помилка, з'являється діалогове вікно Помилка виконання макросу(Action Failed), аналогічне до вікна Покрокове виконання макросу(Macro Single Step), але без можливості продовжити процес (кнопки Крок(Step) та Продовжити(Continue) недоступні). Можна лише перервати виконання макросу, натиснувши кнопку Перервати(Halt). У вікні відображається макрокоманда, що містить помилку.

Пошук помилок у макросах, як правило, не викликає великих труднощів. Це зв'язано з тим що:

  • більшість синтаксичних помилок перевіряється при введенні і система просто не дасть ввести неправильну назву макрокоманди або умовний вираз (щоправда, вона не захистить від введення неправильного імені об'єкта, наприклад, неіснуючої форми або елемента управління у формі);
  • макроси, як правило, досить прості і не містять довгих послідовностей макрокоманд, інакше краще написати процедуру на VBA,т. до. мова VBA надає більше можливостей і має суттєво кращі засоби налагодження.

Основні помилки, які виникають у макросах, пов'язані або з неправильним введенням імен об'єктів, і тоді Access не може знайти відповідний об'єкт, або з тим, що об'єкти, на які посилається макрокоманда, недоступні, наприклад, форма не відкрита. Тому при виникненні помилки в першу чергу потрібно перевірити, чи правильно введені імена об'єктів і чи відкриті форми, використані в умовах або аргументах макрокоманд.

Порада

Перш ніж використовувати посилання на форму або елемент керування, рекомендується виконувати перевірку, чи відкрита форма за допомогою функції isLoaded(). На жаль, ця функція не є стандартною функцією Access, а зазвичай включається до модуля "Службові функції" (Utility Function) бази даних "Борей". Ви можете скопіювати її звідти до бази даних.

Стандартним прийомом налагодження як процедур, так і макросів є виведення на екран спеціальних повідомлень, що говорять про проходження певних етапів процесу. У макросах це здійснюється шляхом вставки додаткових макрокоманд Висновок Повідомлення (MsgBox) для відображення таких повідомлень. Причому в повідомленні можна вивести значення властивостей елементів управління, наприклад: "Ціна товару =" & Forms! Товари! Ціна

Можна легко вимкнути виведення на екран налагоджувальних повідомлень, для чого введіть у стовпець "Умови" (Condition) навпроти відповідних макрокоманд значення Брехня.

Ще один стандартний прийом - встановлення точок зупинки. Його застосовують для того, щоб зупинити виконання макросу у певній точці до завершення процесу. Для цього використовується макрокоманда Зупинити Макрос (StopMacro). Макрос буде виконуватися до макрокоманди Зупинити Макрос (StopMacro), після чого можна перевірити результати. Таким чином можна локалізувати помилку з точністю до макрокоманди.

Застосування макросів

Макроси можуть застосовуватися для вирішення найрізноманітніших завдань. У першому розділі цього розділу ми навели таблицю макрокоманд, згрупованих за категоріями. Тепер розглянемо застосування макрокоманд деяких категорій.

Робота з даними у формах та звітах

У цю категорію входить набір макрокоманд, що забезпечують відбір даних, переміщення за даними та оновлення даних у формах. Перш ніж перейти до прикладів використання макросів, покажемо, як застосовувати посилання на форми, звіти та елементи управління в аргументах та умовах макрокоманд, оскільки такі посилання використовуються дуже часто.

Щоб задати посилання на форму або звіт, потрібно спочатку визначити, яке сімейство (collection) входить об'єкт, який створюється посилання. (Докладніше про сімейства та складові їх об'єкти див. гл. 13.)Усі відкриті форми входять у сімейство Форми (Forms), а відкриті звіти - у сімейство Звіти (Reports). Повне посилання на форму або звіт має складатися з двох частин: ім'я Сімейства! Ім'я Об'єкта. Причому якщо ім'я об'єкта містить пробіли або спеціальні символи, його потрібно укласти в квадратні дужки. Якщо прогалини в імені не використовуються, дужки не можна ставити. Таким чином, посилання на форму виглядатиме так: Forms![Замовлення клієнта] АБО Forms!Клієнти Для звіту посилання виглядають аналогічно:

Reports! [Звіт про продаж] АБО Reports!Прайс-лист Посилання на властивість форми або звіту складається з трьох частин: ім'я Сімейства! ім'я Об'єкта. ім'я Властивості Наприклад:

Forms!Клієнти.Visible або Reports![Продажі за період].MenuBar Властивість Виведення на екран(Visible) визначає, чи буде форма видна на екрані чи схована, а властивість Меню(MenuBar) дозволяє пов'язати зі звітом або формою спеціальне меню.

Щоб створити посилання на елемент керування або його властивість, необхідно вказати ім'я. Якщо ім'я містить пробіли, воно полягає у квадратних дужках. Посилання на елемент управління у формі або звіті складається з трьох частин:

ім'я Сімейства! ім'я Об'єкта! ім'я Елементу

Forms![Замовлення клієнта]![Номер замовлення]

Reports![Продажі за період]![Сума]

ім'я Сімейства! ім'я Об'єкта! ім'я Елементу. ім'я Властивості

Наприклад:

Forms![Замовлення клієнта]![Номер замовлення].Enabled

Властивість Доступ(Enabled) дозволяє заборонити або дозволити доступ до елемента керування.

Об'єкт може мати властивість за замовчуванням. Ця властивість застосовується у тому випадку, коли ім'я властивості у засланні явно не вказано. Наприклад, у елементів управління за замовчуванням використовується властивість Значення(Value), тому посилання на Forms! Товари! Ціна дозволяє отримати доступ до значення, яке відображається в текстовому полі "Ціна".

На підлеглу форму чи звіт можна посилатися як і, як і будь-який інший елемент управління, т. до. підлегла форма і підпорядкований звіт є одним із типів елементів управління. Наприклад:

Forms!Замовлення!ПідформаТовари

Тут ПідформаТовари - це ім'я елемента управління у формі "Замовлення", який є підлеглою формою.

А ось посилання на елемент управління у підлеглій формі чи звіті має особливу структуру: після імені елемента управління, який є підлеглою формою, потрібно спочатку вказати спеціальну властивість: Form – для форм або Report – для звітів, а потім ім'я елемента управління, на який виконується посилання:

Forms!Замовлення!ТовариПідформа.Form![Код Товару]

Фільтрування записів у формах, звітах, таблицях

Перейдемо приклади застосування макрокоманд Access. Для відбору записів у формах, звітах, таблицях використовується макрокоманда Застосувати Фільтр (ApplyFilter). Задати фільтр можна двома способами: або вказавши ім'я заздалегідь створеного фільтра в аргументі Ім'я фільтра(Filter Name), або безпосередньо поставивши умову вибірки в аргументі Умова відбору(Where Condition). Якщо фільтр потрібно застосувати відразу при відкритті форми, тоді з подією Відкриття(On Open) форми необхідно зв'язати макрос, що містить макрокоманду Застосувати Фільтр (ApplyFilter). Якщо потрібно міняти набір записів, що відображаються у відкритій формі динамічно, надходять таким чином:

  • створюють у цій формі набір полів, у яких можна задати умови відбору;
  • створюють кнопку Застосувати фільтр,з якою пов'язують макрос, що містить макрокоманду Застосувати Фільтр (ApplyFilter). Як значення аргументу Умова відбору(Where Condition) для цієї макрокоманди вказують вираз, який містить посилання на ці поля.

Приклад такого рішення наведено на рис. 11.15. На цьому малюнку представлена ​​форма "Товари" (Products), що дозволяє переглядати товари з вибіркою за різними критеріями.

Ця форма побудована на основі таблиці "Товари" (Products) за допомогою Майстра автоматичної генерації стрічкових форм. Потім у режимі Конструктора форм до неї додані поля для визначення критеріїв вибору та кнопки для застосування та скасування фільтра. Відповідні макроси, пов'язані з подією Натискання, кнопки(On Click), наведені на рис. 11.16. Для скасування фільтра використовується макрокоманда ПоказатиВсіЗаписи(ShowAllRecords).

Рис. 11.15. Форма для відбору записів за заданими критеріями

Рис. 11.16. Макроси для встановлення та скасування фільтра у формі "Товари"

На рис. 11.16 представлено два макроси: Встановити Фільтр та Скасувати Фільтр. У діалоговому вікні Область введення(Zoom) відображено значення аргументу Умова відбору(Where Condition) макрокоманди Застосувати Фільтр (ApplyFilter). Зверніть увагу, умова вийшла досить складною, а довжина поля Умова відбору(Where Condition) обмежена 255 символами. Тому, якби ми включили до умов відбору ще одне поле, наприклад "Постачання припинено", нам довелося б окремо створити спеціальний фільтр та задати його ім'я в аргументі Ім'я фільтра(Filter Name).

У макросі "Скасувати Фільтр", крім макрокомандиПоказатиВсіЗаписи(ShowAllRecords),потрібні ще дві макрокоманди, щоб очистити поля "ВибірПостачальника" та "ВибірТипу", тобто привласнити їм значення Пусто(Null). Це робиться за допомогою макрокоманди ЗадатиЗначення(SetValue).

Переміщення за даними

Ця група макрокоманд пов'язана з переміщенням за записами та елементами керування. Як приклад застосування макрокоманд цієї групи розглянемо ситуацію, коли користувач працює з формою "Клієнти" і хоче знайти замовлення клієнта, номер якого йому відомий. Повернімося до прикладу, наведеного в розд. "Призначення макросу події".Тоді ми створили у формі "Клієнти" кнопку Замовлення клієнтадля відображення замовлень вибраного клієнта. Спробуймо вдосконалити ці форми. Якщо номер замовлення відомий користувачеві, він може ввести його у текстове поле Пошук замовлення,яке можна додати до форми "Клієнти" (Customers). Тоді у формі "Замовлення" (Orders) слід відразу показати запис, що містить відповідний рахунок. Додамо поле "Пошук замовлення" в заголовок форми і зробимо так, щоб при відкритті форми "Замовлення" (Orders) перевірялося значення цього поля і, якщо воно не порожнє, здійснювався пошук рахунку з зазначеним номером і виконувався перехід на відповідний запис. Інакше поточною стала б перший запис з відфільтрованого набору записів. На рис. 11.17 показано форму "Клієнти" (Customers) з новим полем та макрос "Пошук замовлення", який пов'язаний з подією (On Load) форми "Замовлення" (Orders).

Оскільки доданий макрос обробки події посилається на елемент керування у формі "Клієнти" (Customers), він повинен виконуватися лише в тому випадку, якщо ця форма відкрита, і, крім того, пошук повинен здійснюватися лише тоді, коли поле "Пошук замовлення" не порожнє . Тому формуються умови макросу. Перш ніж здійснювати пошук запису за зразком в одному з полів, необхідно активізувати це поле, для чого використовується макрокоманда Келементу Управління (GoToControl). З її допомогою встановлюється фокус на полі "КодЗамовлення" (Orderld). Але це поле у ​​формі "Замовлення" (Orders) недоступне, тому спочатку потрібно змінити значення якості Доступ(Enabled) цього поля. В іншому випадку виконання макрокоманди Келементу Управління (GoToControl) призведе до помилки.

Макрокоманда Келементу Управління (GoToControl) використовується, як правило, "якщо потрібно змінити стандартний порядок переходу між полями у формі. Зазвичай перехід між полями виконується за допомогою клавіші<Таb>, однак іноді потрібно пропустити ряд полів і перемістити фокус до певного елементу управління. Це може залежати від будь-яких умов, наприклад, від значення поля. В цьому випадку на подію Після оновлення(After Update) для цього прля призначається макрос, який переміщує фокус на потрібний елемент управління у формі. Як аргумент для макрокоманди необхідно вказати коротке ім'я елемента управління. У разі надмірно довгого імені перехід до елемента керування не відбудеться і з'явиться повідомлення про помилку.

Рис. 11.17. Приклад макросу для переміщення за даними

Оновлення даних у формах та елементах управління

Остання група макрокоманд у категорії, що розглядається, пов'язана з оновленням даних в активних формах, таблицях і запитах. Якщо кілька осіб у мережі одночасно змінюють дані, то форми та таблиці конкретного користувача можуть не відображати актуальних даних. Для того, щоб відображені дані відповідали поточному стану бази даних, їх необхідно оновити за допомогою команди Записи, Оновити(Record, Refresh) (див. Розд. "Робота із записами" гл. 2).

Схожа ситуація виникає навіть в режимі одного користувача, якщо у формі використовується поле зі списком, джерелом даних для якого є таблиця або запит. Якщо у вихідну таблицю були додані записи, то в полі зі списком вони автоматично не з'являться – потрібно повторно виконати запит. Крім полів зі списком, до елементів управління, що вимагають оновлення даних, що відображаютьсяних, відносяться також списки та елементи управління підлеглої форми, об'єкти OLE і обчислювані елементи управління, що містять статистичні функції за підмножиною записів, такі як DLookUp () або DSum ().

Для того, щоб виконати оновлення записів у формах, таблицях або елементах управління, використовуються макрокоманди.Оновлення(Requery), ПоказатиВсіЗаписи(ShowAllRecords) І ОновитиОб'єкт(RepaintObject).

Макрокоманда Оновлення (Requery) оновлює дані в об'єкті бази даних шляхом перегляду джерела даних. Макрокоманда має один аргумент, який містить ім'я об'єкта, який слід оновити. Якщо оновлюється активний об'єкт, наприклад форма, поле аргументу слід залишити порожнім. При цьому макрокоманда повторно виконуватиме запит, вказаний у властивості Джерело даних(RecordSource) цієї форми.

Розглянемо приклад використання макросу оновлення даних. У формі "Клієнти" (Customers) є поле зі списком "Країна" (Country). Джерелом даних для цього поля є запит, який вибирає значення з поля "Країна" (Country) таблиці "Клієнти" (Customers):

SELECT DISTINCT Клієнти.Країна FROM Клієнти;

Якщо при введенні клієнта до таблиці додається нова назва країни, то ця країна не з'явиться в списку, оскільки запит буде виконано повторно тільки при наступному відкритті форми. Щоб поновити список країн раніше, слід призначити події Після оновлення(After Update) форми макрос Клієнти. Оновлення списку країн, що складається з однієї макрокоманди Оновлення (Requery) зі значенням аргументу "Країна" (Country) (рис. 11.18).

Рис. 11.18. Призначення макросу події форми Після оновлення

Зауваження

Макрокоманда Оновлення (Requery) оновлює лише один об'єкт, тому якщо у формі існують елементи керування, що вимагають оновлення даних, і в макросі, призначеному цій формі, використовується макрокоманда Оновлення (Requery) з порожнім значенням аргументу, то оновлюватимуться тільки записи у формі. Для кожного елемента управління потрібно використовувати окрему макрокоманду. Якщо ця макрокоманда як аргумент містить ім'я елемента управління, то при її виконанні оновлюється лише даний елемент. Записи у самій формі не оновлюються.

За допомогою макрокоманди Оновлення (Requery) можна оновлювати дані в неактивній формі, точніше, не в тій формі, якою призначений макрос. Однак у цьому випадку спочатку необхідно виконати макрокомандуВиділити Об'єкт (SelectObject),яка перенесе фокус на потрібну форму, щоб активізувати її (потім фокус можна повернути назад).

Макрокоманда ПоказатиВсіЗаписи (ShowAllRecords), як ми вже відзначали, скасовує дію фільтра і повторно переглядає джерело записів. Її часто використовують для оновлення даних у підлеглій формі.

Макрокоманда ОновитиОб'єкт (RepaintObject) застосовується лише до об'єкта бази даних (до таблиці, запиту, форми, звіту, сторінки, макросу та модулю) і не застосовується до елемента управління. Вона виконує негайне оновлення вказаного відкритого об'єкта (якщо ім'я об'єкта не встановлено, оновлюється активний об'єкт), хоча при цьому не виконується повторне виконання запиту до джерела даних. Оновлення об'єкта не впливає. відображає нові та віддалені записи, як це відбувається при виконанні макрокоманди Оновлення (Requery). Зазвичай макрокоманду ОновитиОб'єкт (RepaintObject) застосовують для відображення результатів зміни даних за допомогою макрокоманд ЗадатиЗначення (SetValue), а також для повторного обчислення значень виразів у елементах управління, що обчислюються.

Робота з об'єктами

Розглянемо спочатку, як використовується макрокоманда ЗадатиЗначення (SetValue), яка дозволяє встановлювати значення властивостей елементів управління у формах та звітах. Ми вже використовували цю макрокоманду у попередніх прикладах.

Встановлення властивостей елементів керування дозволяє динамічно, залежно від умов, робити ці елементи недоступними або невидимими. Ось кілька прикладів.

  • Можна створити одну форму, в якій, залежно від певних умов, будуть видимими різні поля. Це дозволяє використовувати одну форму в кількох випадках і не створювати кожної ситуації додаткову форму. Коли форм у додатку дуже багато, така можливість стає дуже корисною. Щоб зробити елемент керування невидимим, слід встановити значення Брехня(False) для якості Виведення на екран(Visible) цього елемента. Щобпоказати елемент управління на екрані, задайте для цього властивості значення Істина(True).
  • Залежно від поточного стану роботи з даними, можна змінювати доступність кнопок, призначених для виконання певних дій, або інших елементів керування у формі. Щоб зробити елемент керування недоступним, задайте значення Брехня(False) його властивості Доступ (Enabled). Щоб елемент керування став доступним, задайте значення Істина(True) для цієї властивості.
  • Можна заборонити користувачеві змінювати дані у формі. Для цієї властивості Доступ(Enabled) відповідних полів слід присвоїти значення Брехня(False), а властивості Блокування записів(Locked) - значення Істина(True). Якщо потрібно заборонити зміну в усіх полях, встановіть значення Брехня(False) для наступних властивостей форми: Дозволити зміни(Allow Edits), Дозволити додавання(Allow Additions), Дозволити видалення(Allow Delitions). Ці властивості можна змінювати динамічно, т. е. у процесі роботи користувача з формою. Наприклад, ви можете дозволити або заборонити редагування даних після перевірки прав користувача.
  • За допомогою макрокоманди ЗадатиЗначення (SetValue) можна динамічно змінювати значення властивості Джерело записів(RecordSource) для форми, що дозволяє керувати вмістом даних, що відображаються.

Існують макрокоманди для відкриття та закриття об'єктів Access:

Відкрити Форму (OpenForm), Відкрити Запит (OpenQuery), Відкрити Звіт (OpenReport) і т. д. Для відкриття об'єкта кожного типу застосовується окрема макрокоманда, а для закриття об'єкта використовується загальна для об'єктів всіх типів макрокоманда Закрити (Close). Тип об'єкта, якого слід застосувати цю макрокоманду, вказується як один з її аргументів. У попередніх прикладах вже використовувалися макрокоманди Відкрити Форму (OpenForm) та Закрити (Close) для активного об'єкта.

Макрокоманда Відкрити Запит (OpenQuery) дозволяє виконати будь-який тип запиту, у тому числі запит на зміну даних. Якщо як аргумент цієї макрокоманди задається ім'я запиту на вибірку або перехресного запиту, результатом виконання макрокоманди буде виведення на екран вибраних записів. Якщо ж аргумент - ім'я запиту зміну даних, то макрокоманда виконає запит, змінюючи відповідним чином дані таблицях.

Під час виконання запиту, який змінює дані, на екрані відображатимуться попереджувальні повідомлення. Щоб вимкнути виведення цих повідомлень, використовуйте макрокоманду Встановити Повідомлення (SetWarnings) зі значенням аргументу Ні(No). Тільки не забудьте після виконання запиту знову увімкнути виведення системних повідомлень, застосувавши ту ж саму макрокоманду, але з аргументом Так (Yes). Інакше Access не відображатиме жодних системних повідомлень, що може призвести до виконання небажаних дій у програмі.

Макрокоманда Відкрити Подання (OpenView) аналогічна макрокоманді Відкрити Запит (OpenQuery), тільки застосовується вона у проектах Access 2000 і призначена для роботи з даними, що зберігаються на сервері.

Макрокоманда Відкрити Збережену Процедуру (OpenStoreProcedure) дозволяє виконати або відкрити в режимі редагування збережену процедуру сервера (див. Розд. "Особливості розробки клієнт-серверних додатків" гл. 17).

У цьому розділі описані далеко ще не всі макрокоманди. Для отримання повної інформаціївикористовуйте довідкову систему Access. Щоб швидко отримати довідку:

  1. Виберіть команду Довідка, Довідка Micrisift Access (Help, Microsoft Access Help).
  2. Розкрийте вкладку Майстер відповідей(Answer Wizard) та введіть у поле Виберіть дію(What would you like to do?) ім'я макрокоманди. Натисніть кнопку Знайти(Search).

Перетворення макросів на процедури VBA

Якщо ви створили багато макросів, а потім вирішили перейти до програмування на VBA, не слід турбуватися про те, що доведеться знову переписувати на VBA всі створені макроси. У Access існує можливість автоматичного перетворення макросів на процедури на VBA. Це стосується як макросів, пов'язаних з подіями у формах та звітах, які перетворюються на процедури обробки подій, так і загальних макросів, не пов'язаних із формами та звітами. Усі вони перетворюються на окремі стандартні модулі.

Давайте спробуємо перетворити на процедури обробки подій макроси, призначені подіям форми "Наклейки для клієнтів" (Customers Labels Dialog):

  1. Відкрийте форму "Наклейки для клієнтів" (Customers Labels Dialog) у режимі Конструктора.
  2. Виберіть команду Сервіс, Макрос, Перетворити макроси форми(Tools, Macro, Convert form's Macros to Visual Basic).
  3. У діалоговому вікні Перетворення макросу форми(Convert form macros) (Мал. 11.19) натисніть кнопку Перетворити(Convert), залишивши прапорці за замовчуванням.

Рис. 11.19. Перетворення макросу на процедуру VBA

  1. Коли перетворення закінчиться, у формі "Наклейки для клієнтів" (Customers Labels Dialog) клацніть правою кнопкою миші, наприклад, за кнопкою Скасувати,та виберіть команду Властивості(Properties).
  2. У діалоговому вікні Властивості(Properties) розкрийте вкладку Події(Events).
  3. У полі для події Натискання кнопки(On Click) виявилося встановленим значення [Процедура обробки подій](). Клацніть по кнопці Побудовача, що знаходиться праворуч від поля, – відкриється вікно редактора VBA з текстом процедури (рис. 11.20).

Рис. 11.20.Процедура, отримана з макросу

У цій процедурі, одержаній з макросу, використовуються об'єкт DoCmd для виконання макрокоманди закриття форми. Відповідно до прапорців, встановлених у вікні Перетворення макросу(Convert Macro), коментарі в макросі були перетворені на коментарі в процедурі і був доданий код обробки помилки, який видає на екран повідомлення про помилку у разі її виникнення (Див. гл. 13).

Аналогічно виконується перетворення макросів, призначених для подій звіту.

Тепер розглянемо перетворення на процедуру VBA макросу, не пов'язаного з подією форми або звіту, наприклад, створеного раніше макросу "Менеджери з продажу".

  1. Клацніть по ярлику Макроси(Macros) у вікні бази даних "Борей". З'явиться перелік макросів. Виділіть макрос "Менеджери з продажу".
  2. Виберіть команду Сервіс, Макрос, Перетворити макроси(Tools, Macro, Convert Macros на Visual Basic).
  3. Відкриється таке ж діалогове вікно, як у попередньому прикладі (див. мал. 11.19), у якому необхідно натиснути кнопку Перетворити(Convert). Після закінчення процесу перетворення з'явиться повідомлення про успішне завершення процесу перетворення та відкриється вікно редактора VBA, в якому можна переглянути отриманий код на VBA (рис. 11.21).
  4. Макрос перетворюється на функцію з аналогічним ім'ям Менеджери_по_продажам (пробіли замінилися символами підкреслення).

Рис. 11.21. Результат перетворення макросу "Менеджери з продажу"

Після перетворення вихідний макрос "Менеджери з продажу" не був видалений, а у списку модулів у вікні бази даних "Борей" з'явився новий модуль з ім'ям "Перетворений макрос - Менеджери з продажу" (Converted Macro - Менеджери з продажу).

Існує ще один спосіб перетворення макросів на модуль VBA:

  1. Виділіть макрос "Менеджери з продажу" у вікні бази даних "Борей".
  2. Виберіть команду Файл, Зберегти як(File, Save As).
  3. У діалоговому вікні, що з'явилося Збереження(Save As), у списку Як (As) виберіть елемент Модуль(Module) (мал. 11.22) та натисніть кнопку ОК.

Рис. 11.22.Збереження макросу як модуля

Висновки

У цьому розділі ми познайомили вас із макросами, способами їх створення та запуску, навели короткий огляд існуючих макрокоманд та показали приклади їх використання. Ми не описували всі події у формах та звітах та їх обробку за допомогою макросів. Цей матеріал докладно викладено в гол. 13.Немає необхідності приділяти особливу увагу обробці подій за допомогою макросів, оскільки ті ж дії можна реалізувати у процедурах VBA.

На закінчення хочеться ще раз підкреслити, що використання макросів дозволяє без особливих зусиль створювати програми, що автоматизують багато дій користувача. Рекомендується розпочинати створення таких програм, перш ніж заглиблюватися у вивчення мови програмування VBA. Однак складні розраховані на багато користувачів програми слід відразу розробляти, використовуючи мову програмування VBA, не створюючи складних комбінацій з макросів і модулів.

Підрахунок кількості записів у всьому звіті

1. Відкрийте звіт у режимі конструктора.

2.Додати обчислюване поле до примітки звіту.

3.Щоб відкрити вікно властивостей, переконайтеся, що потрібне поле вибрано, та натисніть кнопку Властивості на панелі інструментів.

4. Введіть в комірку властивості Дані поля, що обчислюється, вираз =Count(*). Цей вираз використовує функцію Count для підрахунку всіх записів звіту, включаючи записи, що мають порожні значення в деяких полях.

Макрос.Макрокоманда або набір макрокоманд, який використовується для автоматичного виконання деяких операцій.

Макросомназивають набір з однієї або більше макрокоманд, які виконують певні операції, такі як відкриття форм або друк звітів. Макроси можуть бути корисні для автоматизації завдань, що часто виконуються.

Робота з формами та звітами суттєво полегшується за рахунок використання макрокоманд. Microsoft Access надає понад 40 макрокоманд, які можна включати в макроси. Макрокоманди виконують такі дії, як відкриття таблиць і форм, виконання запитів, запуск інших макросів, вибір пунктів меню, зміна розмірів відкритих вікон тощо. З їх допомогою ви можете навіть здійснювати запуск інших програм, що підтримують динамічний обмін даних (DDE) наприклад Microsoft Excel, і проводити обмін даними між вашою базою даних та іншими програмами. Макрокоманди можна поєднувати в макрос і ставити умови їх виконання.

Microsoft Access надає різні типимакрокоманд, що дозволяють автоматизувати роботу програми. Ви можете використовувати макроси для виконання наступних дій:

Відкриття таблиці, запиту, форми або звіту у будь-якому доступному режимі.

За допомогою макросів ви можете закрити відкриту таблицю, запит,

форму чи звіт;

Відкрийте звіт у режимі попереднього перегляду або безпосереднього виводу на принтер. Ви можете вивести дані зі звіту до файлу форматі RTF(.rtf), у звичайному текстовому форматі (.txt) або файл Microsoft Excel (.xls) і потім відкрити їх у Microsoft Word, WindowsNotepad або Microsoft Excel;

Виконання запиту на вибірку або запиту на зміну. При цьому

параметри запиту можуть використовувати значення елементів керування

будь-якої відкритої форми;

Виконання дій залежно від значень у базі даних, формі або

звіті. Макроси можуть запускати інші макроси та викликати функції

VBA. Ви можете перервати виконання поточного макросу або всіх

макросів, скасувати подію, що запустила макрос, або навіть вийти з

додатки;

Налаштування значення будь-якого елемента керування форми або звіту. Можна емулювати роботу з клавіатурою і передавати дані з клавіатури в системні вікна діалогу. За допомогою макросів можна оновлювати значення будь-яких елементах управління, джерелом даних яких є запит;



Застосування фільтра, переходу до будь-якого запису та пошуку даних у базовій таблиці чи запиті форми;

Визначення спеціального рядка меню, що замінює стандартну. Ви можете зробити доступним або недоступним пункт спеціального меню, у тому числі контекстного, зняти галочку або позначити його. Крім того, за допомогою макросів можна відкрити або закрити будь-яку зі стандартних або спеціальних панелей інструментів;

Виконання команди будь-якого меню Access;

Переміщення, зміни розмірів, згортання чи відновлення будь-якого вікна всередині робочої області Access. Ви можете передавати фокус будь-якому з вікон або будь-якому елементу керування у вікні, вибирати сторінку звіту та виводити її у режимі попереднього перегляду;

Виводу на екран інформаційних повідомлень та подачі звукових сигналів для привернення уваги до ваших повідомлень. Ви також можете вимкнути деякі попереджувальні повідомлення під час виконання запитів на зміну;

Перейменування будь-якого об'єкта бази даних, копіювання вибраного об'єкта на поточну або іншу базу даних Access. Ви можете використовувати макроси для збереження або видалення об'єктів з вашої бази даних. Крім того, макроси дозволяють імпортувати, експортувати або зв'язувати таблиці з інших баз даних, імпортувати або експортувати електронні таблиці та текстові файли;

Запуск програми, а також для обміну даними з програмою за допомогою механізму DDE або буфера обміну. Ви можете вивести дані з таблиці, форми, запиту або звіту у вихідний файл та відкрити його у відповідній програмі. Можна також передати послідовність натискань клавіш на програму, що очікує введення з клавіатури.

Розглянемо інші можливості макросів. Командні кнопки, які відкривають та розміщують форми та встановлюють значення полів, допоможуть перемикатися з одного завдання на інше. Ви можете створити найскладніші процедури редагування, що перевіряють правильність даних, що вводяться у форму, включаючи перевірку даних в інших таблицях.

Створення простих макросів

1. Щоб розпочати роботу з макросами, у вікні бази даних клацніть лівою кнопкою мишки на вкладку Макрос (Macros), на екрані з'явиться наступне вікно:

Вибрано вкладку Макроси

Малюнок 2

3. Верхня частина вікна використовується для визначення макросу, а нижня призначена для введення значень аргументів макрокоманд, включених до нього. У верхній частині присутні принаймні два стовпці із заголовками Макрокоманда та Примітка. Натиснувши кнопки Імена макросів (1) та Умови (2) на панелі інструментів, ви можете побачити всі чотири стовпці, показані на малюнку 3

Малюнок 3

Зверніть увагу на область (4) у правій нижній частині вікна макросу, в якій

виводиться коротка довідка. Зміст повідомлення змінюється залежно від положення курсору у верхній частині вікна макросу (пам'ятайте: для отримання контекстної довідки можна натиснути клавішу F1).

4. У стовпці Макрокоманда задається одна з 49 макрокоманд, що надаються

Access. Якщо ви клацнете в будь-якому осередку стовпця Макрокоманда, то в правому кінці осередку з'явиться кнопка (3) зі стрілкою вниз. Натискання цієї кнопки відкриває список макрокоманд, показаний на мал. 4

Наприклад, виберіть у списку макрокоманду Повідомлення. Вона використовується для відкриття вікна діалогу з повідомленням. Це чудовий спосіб виводу в додатку різного роду попереджувальних або інформаційних повідомлень без створення для цього спеціальної форми.

Припустимо, наприклад, що повідомлення є привітання. У відповідний осередок стовпця Примітка введіть текст Запрошення.Стовпець Примітка особливо корисна для документування складних макросів, що містять безліч макрокоманд. У цьому стовпці можна вводити додаткові коментарі, розміщуючи їх на рядках, які не містять макрокоманд.

Після вибору макрокоманди, як-от Повідомлення, Access виведе у нижній частині вікна макросу її аргументи.

(Для переходу з верхньої частини вікна макросу в нижню та назад ви можете скористатися клавішею F6.)

Малюнок 4

Значення аргументу Повідомлення є текст, що виводиться Access у вікні діалогу, введемо туди Запрошення. Аргумент Сигнал служить для відтворення звукового сигналупри появі вікна діалогу, введемо Так. Аргумент Тип дозволяє помістити у вікно повідомлення значок, наприклад, червоне коло з білим перехрестям, виберемо з наведених альтернатив Інформаційне. У комірку аргументу Заголовок вводиться текст, який відображається в заголовку вікна діалогу (Повний текст повідомлення: Ласкаво просимо до нової бази даних.).Тобто. вікно створення простого макросу з використанням макрокоманди Повідомлення буде виглядати так (Рис 5.):

Малюнок 5

У стовпці Макрокоманда за допомогою кнопки (6) можна додати рядок для макрокоманди, а за допомогою кнопки (5) – видалити будь-який рядок.

5 Перед запуском макрос необхідно зберегти. Оберіть у рядку меню Microsoft Access команду Файл | Зберегти (або Файл | Зберегти як/експорт). За допомогою команди Файл | Зберегти Access відкриє діалогове вікно, наведене на Рис.6. Введіть ім'я Макрос1та натисніть кнопку ОК, щоб зберегти макрос.

6 Деякі макроси (як щойно створені) можуть бути запущені безпосередньо з вікна бази даних або вікна макросу, оскільки вони не залежать від елементів керування відкритої форми або звіту. Якщо макрос залежить від форми або звіту, його треба пов'язати з відповідною подією та запускати у разі виникнення. Перед запуском макросу добре перевірити його роботу, виконавши макрокоманди в покроковому режимі.

Щоб розпочати покрокову перевірку, натисніть кнопку (7) За кроками, а потім – Запуск (8) . Access виведе на екран вікно діалогу Покрокове виконання макросу, представлене Рис. 7

Малюнок 6

Малюнок 7

7 Якщо ви натиснете кнопку (9) Крок, запуститься макрокоманда, представлена ​​у вікні діалогу, і Access виведе на екран модальне вікно діалогу зі створеним нами повідомленням, показане на Рис.8:

Малюнок 8

8 Натисніть кнопку ОК, щоб закрити вікно. Якщо в макросі визначено кілька макрокоманд, після першого кроку ви повернетеся у вікно діалогу Покрокове виконання макросу, яке покаже наступну готову до виконання макрокоманду. Оскільки в нашому випадку макрос складається з однієї макрокоманди, Access поверне вас у вікно макросу (Рис 5). По закінченні ще раз натисніть кнопку (7) За кроками, щоб скасувати покроковий режим. В іншому випадку ви залишитеся в покроковому режимі при виконанні будь-якого макросу, поки не закриєте і не перезапустіть Access.

Примітка:

Якщо під час виконання програми у якомусь макросі зустрінеться помилка, Access спочатку виведе вікно діалогу, яке пояснює її. Потім ви побачите схоже на Покрокове виконання макросу вікно діалогу Помилка виконання макрокоманди з інформацією про макрокоманду, що спричинила помилку. У цей момент можна натиснути лише кнопку Перервати та відредагувати макрос, щоб усунути причину помилки.

Макрос – це набір з кількох команд мовою Visual Basicщо дозволяє спростити або запрограмувати операції з базою даної. Як правило, макроси записуються в автоматичному режимі, тому немає необхідності знати мову Visual Basic. Макроси програмують рутинні операції, за їх допомогою зручно створювати Головне менюприкладної системи та підлеглі меню, організовувати пошук даних тощо.

Як правило, макроси пов'язані з “реакцією на подію” елементів Access 2007, що управляють. Події визначають, що відбувається при натисканні кнопки, вході або виході з поля БД, відкритті або закритті форми або звіту.

Створення кнопок для запуску форм

Створимо форму "Панель кнопок" для виклику деяких форм Покупець, Товарі Замовленнянашої бази даних. Для цього виберемо вкладку створіння на панелі інструментів СУБД, а потім натисніть кнопку Макрос . На екрані з'явиться вікно Макрос1. У ньому є таблиця із двома полями. Перше призначено для макрокоманд, друге – для аргументів.

Натисніть на панелі БД закладку Форма,виберемо форму "Покупець" і перетягнемо її в перший рядок таблицю визначення макросу в стовпець Макрокоманда,при цьому з'явиться текст ВідкритиФорму, у правій частині вікна з'явиться назва форми. Закриємо макрос, збережемо його під назвою “Покупець”.

Зауваження. Можна безпосередньо зі списку макрокоманд вибрати макрокоманду ВідкритиФорму,а потім у параметрах (у нижній частині екрана) вказати форму покупця.

Тепер створимо форму для розміщення кнопок. Виберемо вкладку створіння у вікні бази даних , потім команду Порожня форма. Перейшовши в режим конструктора, перетягнемо створений нами макрос "Покупець" на форму. Там з'явиться кнопка із написом Покупець. Під час перегляду списку можна виявити, що властиво Натискання кнопки записано ім'я макросу «Покупець».

Закриємо форму та збережемо її з ім'ям “Панель кнопок”. Для перевірки роботи відкриємо форму та натисніть кнопку Покупець. На екрані з'явиться створена нами раніше форма "Покупець", за допомогою якої можна переглядати та вводити дані щодо покупців.

Завдання

  1. Створити у формі "Панель кнопок" кнопки Товарі Замовленнядля форм "Товар" та "Замовлення з полем зі списком".
  2. Додати до форми “Панель кнопок” заголовок Основні форми введення даних.
  3. Встановіть різний тип оформлення для елементів форми.

Макроси. Автоматичний запуск макросу під час відкриття БД

При відкритті БД Access зручно вивести на екран певну форму, наприклад панель кнопок керування програмою. Зробимо так, щоб при відкритті нашої бази даних виводилася форма “ Панель кнопок”.

Для цього виберемо вкладку Створіння,натисніть кнопку Макрос, у своїй з'явиться порожнє вікно макросу як конструктора. Натисніть на поле в стовпці Макрокоманда, зі списку виберемо макрокоманду ВідкритиФорму. У полі Ім'я форми вкажемо форму панелі кнопок. Закриємо макрос і збережемо його з ім'ям AutoExec.

Тепер закриємо нашу БД та відкриємо її. При цьому автоматично відкриється форма панелі кнопок. Щоб відкрити БД без автоматичного відкриття цієї форми, треба під час відкриття бази даних утримувати кнопку Shift.

Тепер скасуємо автоматичний запуск панелі кнопок. Для цього перейменуємо макрос AutoExec в AutoExec1.

Завдання полягає в тому, щоб реалізувати функцію автозапуску для своєї бази даних.