Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Мет_указ_базы данных.doc
Скачиваний:
2
Добавлен:
01.04.2025
Размер:
8.22 Mб
Скачать

1.7.Решение задач средствами макрокоманд

I. Реализация дополнительных средств навигации по данным

Задача 1. Реализовать возможность выбора из списка некоторого значения и отображения на экран информации из таблицы, относящейся к выбранному значению на примере составной формы ГРУППА. Выбрать название группы из списка, расположенного в заголовке и отобразить информацию о выбранной группе в основной части формы.

  1. Создать составную форму на основе таблиц ГРУППА и ФАКУЛЬТЕТ, включив в нее поля name_dep и name_grup.

  2. В заголовок формы включить поле со списком со свойствами:

Имя: NG

Тип источника строк: Таблица/запрос

Источник строк: SELECT [name_grup] FROM [grup];

Число столбцов: 1

Присоединенный столбец: 1

  1. Простой выбор поля из списка не повлияет никаким образом на выведенную на экран запись. При выполнении этого действия выбранное имя группы помещается в поле NG. Далее нужно создать макрос Goto_find, который использует это имя для поиска соответствующей записи:

КЭлементуУправления

Имя элемента: [name_grup]

НайтиЗапись

Образец поиска: =[NG]

Совпадение: Поля целиком

С учетом регистра: Нет

Область поиска: Вниз

С учетом формата поля: Нет

Только в текущем поле: Да

Первое вхождение: Да

КЭлементуУправления

Имя элемента: [NG]

  1. Связать макрос Goto_find с событием После обновления в свойствах поля со списком NG.

Задача 2. Выбрать название группы из списка, расположенного в заголовке составной формы СТУДЕНТ и отобразить информацию о студенте из этой группы в основной части списка. Создать кнопку Следующий студент, по которой проводится поиск следующего совпадения поискового значения вплоть до следующей записи, в которой не встречается выбранное имя.

  1. Создать составную форму на основе таблиц СТУДЕНТ и ГРУППА, включив в нее поля name_stud, num_grup, name_grup.

  2. В заголовок формы включить поле со списком со свойствами:

Имя: NG

Тип источника строк: Таблица/запрос

Источник строк: SELECT grup.num_grup, grup.name_grup FROM grup;

Число столбцов: 2

Ширина столбцов: 0 см; 3 см

Присоединенный столбец: 1

Примечание. Из списка выбирается название группы, а в поле NG сохраняется номер группы (num_grup).

  1. Включить в форму кнопку, установив для нее следующие свойства:

Имя: Find_s

Подпись: Следующая

  1. Создать макрос Goto_find_N, который использует значение NG для поиска соответствующей записи:

КЭлементуУправления

Имя элемента: [num_grup]

НайтиЗапись

Образец поиска: =[NG]

Совпадение: Поля целиком

С учетом регистра: Нет

Область поиска: Вниз

С учетом формата поля: Нет

Только в текущем поле: Да

Первое вхождение: Да

КЭлементуУправления

Имя элемента: [NG]

  1. Далее нужно создать макрос m_Find_s, который использует элемент управления NG для поиска повторных вхождений номеров групп:

КЭлементуУправления

Имя элемента: [num_grup]

НайтиЗапись

Образец поиска: =[NG]

Совпадение: Поля целиком

С учетом регистра: Нет

Область поиска: Вниз

С учетом формата поля: Нет

Только в текущем поле: Да

Первое вхождение: Нет

КЭлементуУправления

Имя элемента: [Find_s]

  1. Связать макрос Goto_find_N с событием После обновления в свойствах поля со списком NG, а макрос m_Find_s с событием Нажатие кнопки в свойствах управляющей кнопки.

II. Реализация последовательных алгоритмов обработки данных

Задача 3. В начале семестра необходимо выполнить следующие действия:

  • Очистить содержимое рабочих таблиц: date_sem, study_mark, work_plan.

  • Занести новые данные в таблицу date_sem.

  • Занести данные в таблицы work_plan, study_mark по схеме:

Z_d_work_plan z_o_work_planz_d_study_mark

  1. Реализовать запросы на удаление всех строк таблиц date_sem, work_plan, study_mark:

Z_del_date_sem, z_del_work_plan, z_del_study_mark

  1. Создать ленточную форму New_term для корректировки таблицы date_sem (рис. 11, а):

  • в заголовок включить два поля с именем beg, end для занесения Начала и Конца семестра;

  • в основную часть формы включить поля из таблицы date_sem;

  • с событием ПослеОбновления поля num_sem (Подпись № семестра) связать макрос m_beg_sem.edit, который в поля date_beg и date_end автоматически вставляет занесенные в переменные beg и end значения;

  • в основную часть формы включить кнопку Init_date с Подписью Настройка;

  • с событием НажатиеКнопки связать макрос m_beg_sem.init_d, который инициализирует все данные для новой сессии.

  1. В запросе z_d_work_plan изменить условия отбора записей:

  • переменную [Начало семестра] - на forms![NEW_TERM].beg

  • переменную [Конец семестра] - на forms![NEW_TERM].end

  1. Реализовать макрос m_beg_sem:

Имя

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

Edit

Задать значение ([date_beg], forms![NEW_TERM].beg)

Задать значение ([date_end], forms![NEW_TERM].end)

Init_d

Открытьзапрос (z_del_work_plan)

Открыть запрос(z_del_study_mark)

Открыть запрос(z_d_work_plan)

Открыть запрос(z_o_work_plan)

Открыть запрос(z_d_study_mark)

а б

Рис. 11. Образцы форм: а - для задачи 3; б - для задачи 4

III. Реализация интерактивной обработки данных

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

  • включить в таблицу ПЕРЕСДАЧА строку с данными о студенте и сдаваемом им предмете;

  • сформировать направление на пересдачу одному студенту в виде отчета;

  • после того, как в направление будет проставлена оценка, занести в таблицу ПЕРЕСДАЧА через соответствующую форму новую оценку, дату сдачи экзамена и фамилию преподавателя;

  • обновить соответствующую запись в таблице Study_mark.

Предварительно:

  1. Создать форму F_Study_Mark(рис. 11,б):

  2. Создать таблицу Rep_exam(ПЕРЕСДАЧА), которая имеет ту же структуру, что и таблица Study_mark, но в нее еще включено поле для занесения даты выдачи направления (date_w).

  3. Создать форму F_Rep_exam на основе таблицы Rep_exam.

  4. Создать отчет r_order (Направление) по таблице Rep_exam для заданного студента и предмета.

Реализация задачи 3 средствами макросов.

1. Создать макрос Обработка двоек (m_study_mark_2)

Имя

Условие

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

Begin

Открыть форму (F_Rep_exam)

Edit_mark

[mark]=2

НаЗапись (форма F_Rep_exam, новая)

ЗадатьЗначение (FORMS![ F_Rep_exam]!num_dis,

num_dis)

ЗадатьЗначение (FORMS![ F_Rep_exam]!num_stud,

num_stud)

ЗадатьЗначение (FORMS![ F_Rep_exam]!num_prep,

num_prep)

ЗадатьЗначение (FORMS![ F_Rep_exam]!num_grup,

num_grup)

End

Закрыть (форма, F_Rep_exam)

2. Связать макросы с соответствующими событиями формы F_Study_Mark:

Форма. Открытиеm_study_mark_2.begin

Форма. Закрытиеm_study_mark_2.end

Поле [mark].ПослеОбновления - m_study_mark_2.edit_mark

Задача для самостоятельного решения. После того, как сформирована таблица Rep_exam, необходимо:

  • выдать студенту направление на пересдачу (занести дату выдачи направления (date_w) и напечатать его в виде отчета);

  • занести результаты пересдачи экзамена (занести дату сдачи экзамена, оценку и, возможно, исправить фамилию преподавателя);

  • если получена положительная оценка, обновить соответствующую запись в таблице Study_mark, иначе - сформировать новую строку в таблице Rep_exam (номер студента, номер группы, номер дисциплины и номер преподавателя).