Добрый день, vdimas, Вы писали:
V>В модели данных отчета легко совместить нужды и OLAP и простого ценника.
V>Достаточно представить данные иерархически.
V>Предложенная организация данных одинаково хорошо подойдет как для простого "линейного" источника данных, так и для и для источника данных произвольной сложности.
V>Насчет XML — это обязательно?
V>Предлагаю использовать его КАК ОДИН ИЗ ФОРМАТОВ как для хранения макета, так и для входных данных.
V>Предлагаю обратить внимание на то, как работает нетовский грид — ему можно подать любой контейнер объектов, не обязательно рекордсет. Предлагаю сделать допустимым для отчета ЛЮБОЙ источник данных — от Array и ArrayList до TableSet. Рефлекшен легко позволит это сделать.На любой внешний источник данных может "навешиваться" адаптер, приводящие данные к удобному внутреннему виду.
Может всё таки так:
Источник(и) данных -> XML -> ReportEngine ?
1) XML — это стандартный универсальный способ. Любой другой способ создания/хранения/передачи деревянных данных будет просто повторять возможности XML.
2) Источники данных инкапсулируют в себе правила преобразования данных в деревянную структуру и могут быть созданы независимо — OLAP->XML, DataSet->XML, Array->XML, XML->XML (
)
3) Частный случай источника данных — это его "отсутствие"
, т.е. все данные генерируются клиентской программой.
V>Пусть каждая строка данных отчеат содержит от 0-ля до бесконечности ПОДЧИНЕННЫХ НАБОРОВ ДАННЫХ (так сделано в одном из мощнейших генераторов Oracle Report Server).
V>CristalReport, или Access например, предполагают, что если и может быть подчиненный набор данных, то только один. А это крайне порою неудобно.
Только, имхо, не каждая строка, а только специально заданные в шаблоне.