access_2010_в_примерах (833831), страница 14
Текст из файла (страница 14)
10.1) должно быть выведено суммарное число часов в поле отчета Итогопо группе. Поэтому выберем для поля ЧАСЫ функцию Sum.Замечание. Если необходимо подсчитать долю суммарных часов группы отобщих часов всех групп, нужно отметить флажок Вычислить проценты.Далее в следующем сеансе окна мастера (рис. 10.4) выберем из шести предлагаемых видов макета отчета Ступенчатый с Книжной ориентацией. Отметим флажок Настроить ширину полей для размещения на одной странице.Потом зададим имя отчета – «Изучение предметов в группах», которое такжеотобразиться в заголовке отчета. Под этим именем мастер автоматически сохраняет отчет в базе данных. Для того чтобы сразу доработать отчет, выберемдальнейшие действия – Изменить макет отчета.
Отчет отобразиться на экране в режиме конструктора (рис. 10.5).114Рис. 10.4. Окно мастера отчетов при задании видамакета отчетаЭтот отчет по основным параметрам соответствует проекту макета отчета (см.рис. 10.1). в него включены поля из трех взаимосвязанных таблиц. Причемпользователь не потребовалось задавать связи между таблицами и включать вотчет поля КП (код предмета) и ТАБН (номер преподавателя), являющиесяполями связи.Рис. 10.5. Макет отчета о занятиях, проводимых в группах, построенный мастером и отображенный в режиме конструктораОтметим, что на основе информации, сохраняемой в схеме данных, и заданных пользователем полей при создании макета отчета, мастер сам строит необходимый запрос. По этому запросу формируются записи из полей нескольких взаимосвязанных таблиц. В свойствах отчета (рис.
10.6) в качестве источ115ника записей мастер записывает инструкцию SQL, реализующую запрос и определяющую выборку заданных полей из различных таблиц.Рис. 10.6. Окно свойств многотабличного отчета Изучение предметов в группахЗапрос, созданный мастером при подготовке макета отчета, можно просмотреть и при необходимости откорректировать. Чтобы отобразить запрос на экране, нужно в диалоговом окне свойств отчета в строке Источник записейнажать кнопку Построитель, которая вызовет построитель запросов. Открывающееся окно построителя запросов представлено на рис. 10.7.Рис. 10.7.
Запрос, подготовленный мастером отчетов при создании макета отчетаРедактирование макета отчета в режиме конструктора. В отчет, построенный мастером (см. рис. 10.5), в заголовок группы автоматически было вклю116чено поле номера группы НГ. В примечание группы мастером включены итоги по группе: поле для подсчета числа записей в группе и поле для подсчетасуммы часов по группам. Отредактируем надписи этих полей.Поместим поле с выражением =Date(), определяющим текущую дату, в заголовок отчета.Элементы заголовков столбцов размещены в верхнем колонтитуле отчета и,следовательно, будут печататься на каждой странице отчета.
Чтобы заголовкипечатались в каждой группе, как предусмотрено в проекте макета отчета нарис. 10.1, переместим их в заголовок группы.Если необходимо, чтобы сведения о каждой группе печатались на отдельнойстранице, вставьте в примечание группы разрыв страницы.
Для этого воспользуйтесь кнопкой Разрыв страницы на панели Конструктора отчетов.Отредактируем текст заголовков в соответствии с проектом макета. Отчет врежиме просмотра после доработки представлен на рис. 6.25.Замечание. В отчетах можно вывести значения некоторого поля записи илиитогового поля группировки нарастающим итогом. Например, можно накапливать сумму часов от группы к группе. Так, если в первой группе суммарноечисло часов равно 262, во второй – 150, а в третьей – 130, то задав свойствополя Сумма с накоплением = Для всего, можно получить значения: дляпервой группы 262, для второй 412, для третьей 542. Чтобы накапливать сумму значений поля для записей в группе, нужно установить свойство Сумма снакоплением = Для группы. Это свойство размещено на вкладке Данные.Рис.
6.25. Многотабличный отчет (начало) об изучении предметов вгруппах117Урок 11. Разработка отчета на основе запроса.Запрос является мощным и удобным средством выборки взаимосвязанныхданных. Поэтому с помощью запроса можно подготовить данные для сложного отчета.Рассмотрим технологию создания сложного отчета с использованием запросана примере формирования бланка “Экзаменационная ведомость” для группыстудентов по заданному предмету. Бланк должен иметь форму документа, используемого для ввода данных после внесения оценок преподавателем в этотбланк.Проект макета отчета.
Бланк “ Экзаменационная ведомость”, которая должна выводиться из базы данных в режиме просмотра и печати отчета.Рис. 11.1. Проект макета отчета Экзаменационная ведомость.Создание запроса для подготовки данных в отчетДля вывода в отчет реквизитов, указанных в проекте макета нужно определить таблицы – источники и их взаимосвязи.Таблицы источники данных. Для вывода в шапку бланка экзаменационнойведомости значений реквизитов Вид сдачи, Группа необходимы данные изполей ВИДЗ, НГ таблицы ИЗУЧЕНИЕ.
Для вывода значений реквизитов собщей надписью Преподаватель (фамилия, ученое звание) необходимы118данные из полей ФИО, ЗВ таблицы ПРЕПОДАВАТЕЛЬ. Для вывода реквизита Название предмета необходимы данные из поля НП таблицы ПРЕДМЕТ.Для вывода в табличную часть бланка экзаменационной ведомости значенийреквизитов N п/п, Фамилия И.О. необходимы данные из полей НС, ФИОтаблицы СТУДЕНТ.Таким образом, запрос для выборки этих взаимосвязанных данных долженбыть построен на основе таблицы ИЗУЧЕНИЕ, ПРЕПОДАВАТЕЛЬ, ПРЕДМЕТ, СТУДЕНТ.Связи между таблицами запроса.
При создании запроса связи между таблицами установятся автоматически. Связи таблиц ИЗУЧЕНИЕ, ПРЕДМЕТ,ПРЕПОДАВАТЕЛЬ определяются в соответствии со схемой данных БД.При создании запроса между таблицами СТУДЕНТ и ИЗУЧЕНИЕ автоматически установится также связь по одноименному полю НГ (номер группы).Эта связь является связью – объединением, которой нет в схеме данных базы.Заметим, что эти таблицы находятся в отношениях многие-ко-многим, поскольку один студент изучает много предметов, и один предмет изучаетсямногими студентами.
Связь, установленная между таблицами СТУДЕНТ иИЗУЧЕНИЕ, определяет операцию симметричного объединения. При этом записи из этих таблиц объединяются и добавляются в результат только в томслучае, если связанные поля содержат одинаковые значения.Конструирование запроса для подготовки макета отчета.Процесс включения в запрос необходимых таблиц и полей из них являетсядостаточно простым и выполняется по технологии, подробно рассмотренной вглаве 5.
В строке бланка запроса Условие отбора определим параметры запроса |Номер группы| и |Наименование предмета| для аналогового ввода ихзначений при выполнении запроса. Это позволяет получить данные для конкретной ведомости.Рис. 11.2. Запрос на выборку в режиме конструктора для формирования отчета-бланка экзаменационной ведомости119В отчете необходимо выводить значения реквизита Вид сдачи: Экзамен, Зачет, которых нет непосредственно в таблицах БД, но они могут быть получены на основе значений поля ВИДЗ таблицы ИЗУЧЕНИЕ.
Два значения реквизита Вид сдачи: ”Экзамен” и ”Зачет” соответствуют двум возможным значениям поля ВИДЗ: ”лек” и ”np”. Фактически нужно вместо значения ”лек”формировать слово ”Экзамен”, а вместо ”пр” – слово “Зачет”. Для этого надов запрос ввести новое поле, которое формируется как вычисляемое. Это поледолжно содержать встроенную функцию управления.Выражение 1 : Iif ( [ВИДЗ] = «лек»; «Экзамен»; «Зачет»)Именно этого вычисляемого поля по умолчанию является ”Выражение 1:”Функция Iif (”immediate if” – мгновенное условие) аналогична инструкцииif… Then… Else и имеет следующий формат:Iif (условие; если Истина; если Ложь)В соответствии с форматом этой функции, если выполнится условие (ВИД)=«лек» (т.е. в поле ВИДЗ находится значение «лек»), ТО РЕЗУЛЬТАТОМФУНКЦИИ БУДЕТ «Экзамен». В противном случае, т.е. если (ВИДЗ) = «пр»результатом функции будет слово «Зачет».В предыдущем рисунке приведен в окончательном виде запрос для подготовки данных отчета-бланка экзаменационной ведомости.