Упражнение 7. Группировка и сортировка

Отчет, который вы сконструировали в двух предыдущих упражнениях, имеет еще один существенный недостаток. Фамилии людей из списка Контакты выводятся не по алфавиту. Мастер отчетов автоматически сгруппировал данные таблицы Список по их принадлежности к тем или иным записям таблицы Контакты, которая определяется связью между полями Код_Контакты этих двух таблиц. По указанной причине фамилии в отчете упорядочены по возрастанию числового параметра Код_Контакты — идентификатора записей таблицы Контакты. Это неудобно, в отчетах с большим числом записей при такой сортировке будет довольно трудно отыскать нужного человека. Есть смысл изменить порядок сортировки, для этого выполните следующие шаги.

1. Щелкните на кнопке Отчеты окна базы данных.

2. Выделите значок отчета Список контактов.

3. Щелчком на кнопке Конструктор панели инструментов окна базы данных от- кройте отчет в режиме конструктора.

4. Щелкните на кнопке Сортировка и группировка (Sorting And Grouping) панели инструментов, чтобы открыть окно диалога, показанное на рис. 18.19.

Рис. 18.19. Сортировка и группировка

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

Казалось бы, можно просто изменить поле сортировки Код_Контакты на Фамилия, и записи в отчете сразу же выстроятся по алфавиту. Но в этом случае для четырех людей с одинаковой фамилией Петров будет выведен только один заголовок группы, ниже которого разместится список контактов со всеми Петровыми. Вспомните, что новый заголовок группы выводится только для каждого нового значения поля, по которому выполняется группировка. Код_Контакты — уникальный идентификатор записей таблицы Контакты, группировка по которому обеспечивает вывод в отчет всех записей этой таблицы. Для сортировки записей по алфавиту фамилий и имен следует добавить в список окна диалога Сортировка и группировка (Sorting And Grouping) соответствующие поля, разместив их выше поля группировки Код_Контакты.

5. Щелкните в третьей строке на кнопке раскрывающегося списка Поле/выражение (Field/Expression).

6. Выберите пункт Фамилия.

7. В раскрывающемся списке Поле/выражение четвертой строки окна Сортировка и группировка выберите пункт Имя.

Примечание

> При добавлении нового поля сортировки Access автоматически назначает ему порядок сортировки По возрастанию. Чтобы реализовать обратный порядок записей, выберите в раскрывающемся списке ячейки Порядок сортировки соответствующей строки пункт По убыванию (Descending).

8. Щелчком на кнопке строки Фамилия выделите ее.

9. Поместите указатель на кнопку строки Фамилия, нажмите кнопку мыши и перетащите строку на самый верх списка. Отпустите кнопку мыши в тот момент, когда жирная горизонтальная линия, показывающая будущее расположение перемещаемой строки, окажется над первой строкой таблицы.

10. Повторяя шаги 8 и 9, разместите строку Имя между строками Фамилия и Код_Контакты, как показано на рис. 18.20.

Рис. 18.20. Добавление полей сортировки

11. Закройте окно Сортировка и группировка.

Примечание

> Заголовки тех групп, для которых нет ни одной записи в таблице Список, в отчет не выводятся.

1. Щелкните на кнопке Вид панели инструментов, чтобы вывести отчет в режиме предварительного просмотра.

Теперь записи сначала сортируются по фамилиям, затем по именам. После этого для каждой новой записи таблицы Контакты появляется заголовок группы (так как величины поля Код_Контакты для всех записей различны). Ниже каждого такого заголовка из таблицы Список выводятся все контакты, соответствующие данному значению величины Код_Контакты, то есть данному человеку (рис. 18.21).

Рис. 18.21. Окончательный вид отчета

13. Закройте отчет.