Иногда для отчета вполне достаточно одного запроса. 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, появится палитра свойств этого объекта. Для связи можно установить два различных свойства:
HAVING - это выбор, основанный на GROUP BY;
START WITH реализует CONNECT BY, a WHERE - стандартный выбор.
Если между таблицами установлены ограничения "внешнего ключа", то связывать запросы можно непосредственно, без ссылок на группы и столбцы. В нашем случае те же результаты можно получить, щелкнув мышью на инструменте Data Link, а затем на Q_1 и перетащив связь в Q_1. После выполнения некоторых операций над словарем данных и просмотра установленных ограничений Data Model Editor изобразит ту же самую связь данных между В в Q_1 и В1 в Q_2.
Установив связь между основным и подчиненным запросами, с помощью Report Wizard можно создать отчет типа Group Left (группировать слева), в котором две группы отображаются в стиле групп разбиения (рис. 20). Кроме того, можно создать отчет типа Group Above (группировать сверху).
Рис. 20. Отчет с множественным запросом типа "основа - деталь"
Можно также связать две группы, перетащив имя одной из них к имени другой. В этом случае имя основной группы появляется в виде столбца в основной группе, а имя подчиненной группы - в подчиненном запросе. Информация о столбцах в палитре свойств отсутствует. Такой тип связи используется довольно редко. В подчиненном запросе можно ссылаться на основные столбцы через переменные привязки. Одним из способов применения подобных связей является поиск по значению.
Теперь, наряду со связями данных, в распоряжении разработчика полный набор инструментальных средств для создания модели данных отчета.
В этом разделе рассматриваются самые распространенные типы отчетов, создаваемые в Reports.
Табличные и групповые отчеты
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.