Обзор процесса создания приложений. Моделирование данных отчета, страница 10

Иногда для отчета вполне достаточно одного запроса. Developer/2000 позволяет формировать несколько запросов и получать множество результатов, которые гораздо разнообразнее тех, что получены с помощью одного запроса, его групп разбиения, итоговых и формульных столбцов.

Типичным примером является отчет "основа - деталь". Структура отчета Developer/2000 очень похожа на структуру объектов формы "основа - деталь". Вместо двух блоков данных в модели данных отчета используются два запроса. Вместо объекта отношения (relation), принадлежащего основному блоку данных, существует связь данных. Связь данных (data link) - это способ связи двух наборов данных. На самом деле все несколько сложнее: в отчете "основа - деталь" через условие запроса связываются основная группа и подчиненный запрос.

Создадим новый отчет, определив с помощью Report Wizard SQL-запрос для считывания в базе данных информации о видах блюд:

SELECT Вид, В

FROM Вид_блюд

ORDER BY 1

 Для отображения этого запроса и его группы в Data Model Editor сначала нужно щелкнуть мышью на Query, а затем на канве Data Model Editor, рядом с запросом Q_1, после чего ввести следующий SQL-оператор:

SELECT Блюдо, В, Основа

FROM Блюда

ORDER BY 1

Обратите внимание, что столбец В в появляющейся новой группе получает имя В1, а не В. Это гарантирует его уникальность. Теперь нужно щелкнуть мышью на инструменте Data Link, а затем на В и перетащить связь в столбец В1. Если клавишу мыши отпустить, связь включится в запрос и имя этого столбца появится под именем запроса.

Вернувшись в Object Navigator и просмотрев заглавие Data Links, там можно обнаружить новую связь данных:

Если дважды щелкнуть мышью на строке связи данных в Data Model Editor или на значке связи данных в Object Navigator, появится палитра свойств этого объекта. Для связи можно установить два различных свойства:

  • SQL Clause: HAVING, START WITH или WHERE;

HAVING - это выбор, основанный на GROUP BY;

START WITH реализует CONNECT BY, a WHERE - стандартный выбор.

  • Condition: Операция отношения, используемая для сравнения столбцов.

Если между таблицами установлены ограничения "внешнего ключа", то связывать запросы можно непосредственно, без ссылок на группы и столбцы. В нашем случае те же результаты можно получить, щелкнув мышью на инструменте Data Link, а затем на Q_1 и перетащив связь в Q_1. После выполнения некоторых операций над словарем данных и просмотра установленных ограничений Data Model Editor изобразит ту же самую связь данных между В в Q_1 и В1 в Q_2.

Установив связь между основным и подчиненным запросами, с помощью Report Wizard можно создать отчет типа Group Left (группировать слева), в котором две группы отображаются в стиле групп разбиения (рис. 20). Кроме того, можно создать отчет типа Group Above (группировать сверху).

Рис. 20. Отчет с множественным запросом типа "основа - деталь"

Можно также связать две группы, перетащив имя одной из них к имени другой. В этом случае имя основной группы появляется в виде столбца в основной группе, а имя подчиненной группы - в подчиненном запросе. Информация о столбцах в палитре свойств отсутствует. Такой тип связи используется довольно редко. В подчиненном запросе можно ссылаться на основные столбцы через переменные привязки. Одним из способов применения подобных связей является поиск по значению.

Теперь, наряду со связями данных, в распоряжении разработчика полный набор инструментальных средств для создания модели данных отчета.

Типы отчетов

В этом разделе рассматриваются самые распространенные типы отчетов, создаваемые в Reports.

Табличные и групповые отчеты