Это пока черновик будущей статьи, позже он будет причесан и дополнен скриншотами.
Отчет содержит следующие компоненты:
Общая информация об отчете. Эти записи отображаются в разделе "Управление отчетами" и содержат следующие поля:
1. Тип отчета. Может быть "Общий" или "Индивидуальный". Общие отчеты отображают сводную информацию о группе объектов, индивидуальные — об одном объекте. Общие отчеты отображаются в главном меню программы, раздел "Сервис", а индивидуальные сопоставляются с разделами программы и доступны через контекстное меню раздела.
2. Иконка отчета. Здесь можно выбрать иконку, которая будет отображаться в окне просмотра отчета и в панели задач. Можно выбрать из имеющихся либо использовать свой файл с изображением в формате png.
3. Шаблон отчета. Для каждого стандартного отчета можно использовать стандартный шаблон, который идет в составе программы, а можно — измененный (пользовательский). В момент формирования отчета отличие будет только в папке, из которой будет загружаться шаблон. По умолчанию для стандартных отчетов это папка Reports, для пользовательских — CustomReports. Поменять пользовательскую папку модно в настройках программы.
4. Наименование отчета.
5. Группа отчетов. Отчеты одной группы отображаются вместе и при переходе от одного отчета к другому настройки фильтра сохраняются.
6. Имя файла шаблона (без расширения). Расширение программа подставляет сама при генерации отчета. Стандартные шаблоны уже предкомпилированы и имеют расширение dll. Исходники шаблонов имеют расширение mrt.
Запросы. Размещаются на закладке "Управление отчетами — Запросы". Каждый запрос — это взаимодействие с базой данных. Поля запроса:
1. Тип запроса. Подготовка данных подразумевает возможность создания временных таблиц и копирования в них информации из других таблиц. Выборка данных — основной тип запроса, получает табличную информацию из БД. Удаление временных данных — это удаление временных таблиц, если они были созданы.
2. Отчет. Ссылка на отчет, к которому относится данный запрос.
3. Название в шаблоне. В шаблоне может быть несколько источников данных и они различаются по названиям.
4. Связи с элементами фильтра отчета. Эта таблица заполняется при наличии элементов фильтра в текущем отчете и позволяет настроить влияние каждого из элементов фильтра на текущий запрос. Галочками взаимосвязь можно включать/выключать. Поля — это перечень полей в текущем запросе, с которыми будет взаимодействовать фильтр. Например, в запросе есть поле Name. Если добавить текстовый элемент фильтра и связать его с полем Name запроса, то запрос будет выводить только те записи, у которых содержимое поля Name соответствует содержимому текстового элемента фильтра.
5. Запрос для MS Jet и MS SQL. Здесь задаются запросы на языке T-SQL. Синтаксис запросов немного отличается для СУБД MS Jet (файловая БД) и СУБД MS SQL, поэтому полей два. Но в случае, если синтаксис совпадает, поля можно объединить, для этого ниже есть галочка.
Кнопка "Тестировать запрос" выполняет данный запрос на текущей рабочей БД. Будьте внимательны, запросы на удаление и изменение записей приводят к реальным изменениям в БД и отменить эти изменения невозможно (только восстановление из бэкапа). Если это простой запрос на выборку данных (SELECT), то будет показана таблица с полученными из БД данными. В случае ошибки в запросе будет выведено сообщение от СУБД.
Элементы фильтра. Размещаются на закладке "Управление отчетами — Элементы фильтра". Необязательный компонент отчета. Содержат следующие поля:
1. Название элемента. Будет отображаться в фильтре рядом с самим элементом.
2. Тип элемента. От типа элемента зависит набор всех остальных полей.
3. Отчет. Ссылка на отчет, к которому относится данный элемент фильтра.
4. Значение по умолчанию. Это поле актуально для логического типа элемента, когда нужно задать начальное состояние галочки. Следует указывать true/false.
5. Ширина в пикселях позволяет задать размер элемента фильтра. Ширина по умолчанию — 200 пикселей.
6. Способ сравнения. Доступные способы сравнения зависят от выбранного типа элемента.
7. Связи с элементами фильтра отчета. Эта таблица заполняется при наличии запросов в текущем отчете и позволяет настроить влияние данного элемента фильтра на каждый запрос. Галочками взаимосвязь можно включать/выключать. Поля — это перечень полей в запросе, с которыми будет взаимодействовать фильтр.
8. Запрос для MS Jet и MS SQL. Для типа элемента "Список" или "Список с галочками" запрос формирует содержимое списка. Он должен содержать поля ID и Name. Если в исходной таблице поля называются по другому, надо переименовать их в запросе, например: "SELECT ID, NameFull AS Name FROM Staff" выведет список всех сотрудников. Для типа элемента "Диапазон дат" запрос определяет начальную и конечную даты, доступные в фильтре. Это сделано для того, чтобы наглядно видеть за какой период данные по данному отчету есть в базе. В этом случае запрос должен обязательно выводить поля begdate и enddate. Пример настройки такого элемента фильтра можно увидеть в стандартном отчете "Перемещение материалов".
Шаблон отчета. Представляет собой файл, который можно изменять с помощью встроенного редактора.
При формировании отчета происходит следующее:
1. Элементы фильтра получают значения по умолчанию, либо значения, введенные ранее пользователем.
2. В соответствии с настройками связей фильтр применяется к запросам.
3. Запросы последовательно выполняются и формируют таблицы с данными.
4. Таблицы передаются в шаблон и создается печатная форма.