Организация потока данных для отчета по ресурсам Назад В начало Вперед

Поток данных PrjMngFR01Stream для отчета PrjMngRep05 создается в интерфейсе PrjMngFR (см. "PrjMngFR. Поток данных для отчета по запланированным ресурсам. "). Поток содержит данные, относящиеся к отчету в целом (название организации и ФИО лица, утверждающего отчет), а также данные по проектам, по исполнителям и по материалам.

Данные по исполнителям и по материалам относятся к компоненту "Ядро приложения". Для доступа к ним потребуются враперы к таблицам PrjExecutors и PrjMaterials. Данные враперы добавлены в список разрабатываемых интерфейсов межкомпонентного взаимодействия.

Этапы проектов организованы в иерархическую структуру. Обход иерархии требует ручной навигации, средствами логической таблицы не описывается. Поэтому для проектов используется элемент потока dataset. Наиболее естественный способ обработки иерархии - рекурсивный вызов процедуры обработки вершины (узла /листа) иерархии. В обработчике события нет рекурсивного вызова, пришлось его смоделировать. Фактически стек вызовов процедуры был заменен стеком данных о вершине иерархии. Для хранения позиции в БД использованы методы PushPos и PopPos, для сохранения других данных (NRec вышестоящего этапа) использован контейнер cSuperStack.

Для принятия решения, продолжать вывод данных в отчет или нет (вызов метода ContinueDataset), необходимо проверить наличие следующей вершины иерархии. Чтобы избежать повторного обращения к базе данных для восстановления текущих данных эти данные сохраняются в переменных. По окончании обработки события cmOnProcess данные из переменных попадают в поток.

Подробнее см. обработку события cmOnProcess в обрабтчике handleEvent dataset ProjectsDS.

Данные по исполнителям и материалам организованы в соответствии с реляционной моделью. Поэтому для них использован элемент потока table. Для данного элемента поток организуется автоматически в соответствии с подцепками в логической таблице.

Имена полей в потоке задавать не обязательно, но сгенерированные автоматически имена неудобны в использовании - они слишком длинные и плохо видны в диалогах системы Fast Report.