Макрос, що забезпечує перехід від діалогової роботи з базою даних до виведення звітів

Хай необхідно в сеансі введення даних про успішність готувати і виводити звіти про одержані студентами двійки і п'ятірки. Для накопичення даних використовуються таблиці ДВІЄЧНИК і ВІДМІННИК, які включають поля НГ (номер групи), НС (Номер студента в групі), КП (Код предмету) і ФІО студента. Таблиці мають складовий ключ НГ + НС + КП. В таблицях неможливо повторно ввести записи з однаковими значеннями ключа.

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

Основна частина форми відображає запис з таблиці ВИВЧЕННЯ, доповнену зв'язаними даними з головних по відношенню до неї таблиць ПРЕДМЕТ і ВИКЛАДАЧ. Підлегла форма УСПІШНІСТЬвідображає пов'язані з таблицею ВИВЧЕННЯ записи з таблиці УСПІШНІСТЬ, доповнені прізвищем студента. Підсхема даних, на якій будується форма, може бути виділена із загальної схеми даних.

Мал. 5.

 

1. Для вирішення задачі створіть групу макросів Списки успішності:макрос, включаючи макроси, перераховані нижче:

Формування, що заповнює таблиці ДВІЄЧНИК і ВІДМІННИК через відповідні форми.

Звіт, що роздруковує відповідні звіти після закінчення введення даних про успішність.

Початок,що відкриває форми ДВІЄЧНИКі ВІДМІННИК,а також очищає таблиці перед формуванням нових звітів. Це дозволить в черговому сеансі введення даних в таблицю УСПІШНІСТЬ для однієї або декількох груп студентів поодинці або декільком предметам видати звіти для цих груп, а також використати макрос при коректуваннях таблиці. Звіти міститимуть дані тільки за наслідками одного сеансу введення.

2.В першому макросі з ім'ям Початок введіть макрокоманди ОткрытьФорму, які використовуються для заповнення таблиць ДВІЄЧНИК і ВІДМІННИК в другому макросі.

3. Безпосередньо за макрокомандою ОткрытьФорму введіть Выполнить-Команду. По цій макрокоманді для поточного об'єкту виконується команда стандартного меню, задана її аргументом макрокоманди. Виконання цієї макрокоманди еквівалентне вибору користувачем вказаної команди в стандартному меню Access. Виберіть у якості аргументу Виділити всі записи. В якості аргумента другої макрокоманди Выполнить-Команду виберіть Видалити. Дії цих макрокоманд для відкритої форми, рівносильні виконанню відповідних команд в меню Правка. У такий спосіб здійснюється видалення всіх записів в таблицях ДВІЄЧНИК і ВІДМІННИК (мал. 5).

 

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

 

4. Якщо форми не повинні відображатися на екрані, введіть вслід за макрокомандами Выполнить-Командумакрокоманду Свернуть,вживану до вікна поточного об’єкта. Для синхронного процесу введення даних і заповнення таблиць для звіту, можна не згортати форми, а доповнити макрос макрокомандами, що визначають розміщення об'єктів на екрані, щоб одержати зручне відображення всіх форм.

5. Для виконання цього макросу в момент відкриття форми Відомість успішності,у властивості форми в рядок події Открытие введіть ім'я макросу Списки успішності.Початок. В результаті цього макрос виконуватиметься один раз на початку сеансу введення даних.

6. Другий макрос Формуванняповинен виконуватися при оновленні поля ОЦІНКА в записах форми Відомість успішності.Пов'яжіть цей макрос з властивістю події После обновления поля ОЦІНКА, ввівши в рядок властивості ім'я цього макросу Списки успішності. Формування.

7. Щоб почати формування запису про двієчника, введіть макрокоманду НаЗапись, яка дозволить зробити поточним новий запис у формі ДВІЄЧНИК. Вкажіть в аргументі макрокоманди ім'я цієї форми, а в аргументі Записвкажіть, що поточної повиннастати новий запис.

8. Наступні макрокоманди повинні заповнити поля нового запису. Це дозволяє зробити макрокоманда ЗадатьЗначениє, яка присвоїть полям нового запису форми ДВІЄЧНИК значення з полів поточного запису формиВідомість успішності. Аргумент макрокоманди Елемент визначає поле, якому повинно привласнюватися значення. Аргумент Выражение визначає поле, з якого вибирається це значення. Вираз не повинен починатися із знака рівності.

Зауваження!Для посилання на поле або елемент управління у формі, з якої викликається макрос, достатньо вказати тільки ім'я елемента. Для посилання на інші об'єкти повинен використовуватися повний синтаксис.

 

9. В аргументі Елемент запишіть Forms!ДВОЕЧНИК![ім'я поля]. В першій макрокоманді вкажіть поле НГ, в наступних НС, КП і Прізвище.

Зауваження! Скористайтеся побудівником для формування складного посилання на елемент. Будівник викликається клацанням на кнопці в правій частині рядка аргументу.

Оскільки привласнювані значення вибираються з полів поточного запису підлеглої форми УСПІШНІСТЬ : підлегла форма,що викликає макрос, в аргументі Вираз макрокоманди ЗадатьЗначениезапишіть тільки імена цих полів — НГ, НС, КП і Прізвище відповідно.

11. Запишіть аналогічний набір макрокоманд для формування запису про відмінну оцінку.

12. Макрокоманди формування запису про двієчника повинні виконувати тільки в тому випадку, якщо в полі ОЦІНКА введена двійка, а макрокоманди формування запису про відмінну оцінку — якщо в поле ОЦІНКА введена п'ятірка. Щоб аналізувати оцінку, введену у формі Відомість успішності,і залежно від результату формувати новий запис в одній з таблиць ДВІЄЧНИК або ВІДМІННИК, організовуйте виконання різних макрокоманд залежно від результату перевірки умови (мал. 6).

 

13. Перш за все доповніть вікно макросу стовпцем Условие, натискуючи відповідну кнопку на панелі інструментів.

14. В рядок першої макрокоманди НаЗаписьв стовпець Условие введіть логічний вираз [ОЦІНКА]=2. Тепер, якщо вираз прийме значення True, тобто при введенні двійки в поліОЦІНКА виконуватиметься ця макрокоманда і все наступні за нею аж до макрокоманди з новою умовою.

15. Щоб при значенні виразу False не виконувалася група макрокоманд, формуюча запис про двійку, проставте в стовпці умов цих макрокоманд багатокрапку (...).

Увага! Якщо логічний вираз в умові приймає значення False, не виконується макрокоманда з умовою і наступні за нею макрокоманди з багатокрапкою в умові, то наступною виконуватиметься макрокоманда з новою умовою або з порожнім клітинкою умови (див. блок-схему).

16. В рядок другої макрокоманди НаЗаписьв стовпець Условие введіть логічний вираз [ОЦІНКА]=5, а в інших макрокомандах цієї групи проставте багатокрапку (...). Введені в стовпець умови дозволять пропустити виконання цих макрокоманд, якщо введена оцінка відрізняється від п'ятірки.

Зауваження!Завдяки умовам, заданим в макросі, можна виконати формування запису при введенні в полі ОЦІНКА двійки або п'ятірки. При введенні інших оцінок жодна макрокоманда макросу не буде виконана.

 

17. Третій макрос Звітиповинен виконуватися при закритті користувачем форми Відомість успішності.Введіть у властивостях форми в рядку події Закритие ім'я цього макросу Списки успішності. Звіти.

18. Введіть в цей макрос макрокоманди Закрити для ДВІЄЧНИКі ВІДМІННИК,вибравши в рядку аргументів Сохранение значення Так.Виконання цих макрокоманд дозволить зберегти в таблиці останній сформований запис і, таким чином, не втратити їх в звітах.

19. Для виведення звітів на екран в режимі попереднього перегляду використайте макрокоманду ОткрытьОтчет. Ім'я звіту і режим її відкриття вкажіть в аргументах макрокоманди. Якщо немає необхідності проглядати звіт, можна відразу одержати друкарський документ встановивши в аргументі режим друку. Відкритий для перегляду звіт відображатиметься на екрані до тих пір, поки користувач не закриє його.

20. Для перевірки макросу відкрийте форму Відомість успішності,введіть нові записи, закрийте форму. На екрані відобразяться звіти ВІДМІННИКі ДВІЄЧНИК.