Запрос написать не проблема, вся сложность состоит в доступе к данным. Модуль отчетов требует чтобы в него сразу добавили шаблон, а в шаблоне два десятка наборов данных (dataset1, dataset2 ...) и к какому мне обращаться из них
. В своих программах на Delphi я часто использую компонент FastReport, но при формировании набора данных я четко знаю где лежит БД, какие у нее поля и что я передаю в этот компонент(или если запрос в самом компоненте то обращаюсь напрямую к БД). Здесь же, исходя из уже существующих шаблонов, набор данных создает сам модуль отчетов и тут начинаются проблемы - приведу текст одного из существующих отчетов:
Код:
|
procedure FastReportOnStartReport(Sender: TfrxComponent);
begin
BDEQuery2.Sql.Clear();
BDEQuery2.Sql.Add('SELECT t1.S_LATITUDE as LAT,' + //широта
' t1.S_LONGITUDE as LON,'+ // долгота
' t1.S_NAME as SNAME, ' + // Контрольная точка
't1.S_REAL_TIME as S_TIME,'+ // начало заправки
' t1.E_REAL_TIME as E_TIME,'+ // конец заправки
' t1.REAL_CONT as CONT,'+ // продолжительность заправки
' t1.T3_E_LEVEL as E_LEVEL,'+ // конечный уровень топлива
' t1.T3_S_LEVEL as S_LEVEL, ' + // начальный уровень топлива
' t2.NUMBER as Number1,'+ // название машины
' t1.SERNUM as SERNUM,' +
' t2.id as id1 FROM ''temp0.dbf'' t1 LEFT JOIN ''Соответствие.dbf'' t2 on t1.DRIVER_ID = t2.id order by S_TIME'); // берет название машины по ID в файле "соответствие"
BDEQuery2.Open();
end; |
Мне не понятно как формируется и "живет" таблица ''temp0.dbf'' . Открываю - она чистая, значит во время выполнения программы что-то туда пишется , как - не понятно.
Еще один пример из отчетов (заправки и сливы баков)
Код:
|
[(IIF(<Dataset1."S_NAME"> <>'', <Dataset1."S_NAME">, 'N/A'))] |
Этот код записан в разделе "Masterdata"
Шаблон заполнен данными и работает, но в нем не видно как и откуда мы получили Dataset1.
Мне бы хотелось знать порядок обработки данных в модуле отчетов.
И еще меня смущает комментарий в описании модуля
Код:
|
1. Кол-во таблиц в шаблоне должно совпадать с кол-вом отчетов добавленных в состав отчета.
2. В отчет должны быть добавлены столько датасетов с номерами по порядку (Меню «Отчет -> Данные»), сколько таблиц в шаблоне и каждой таблице должен быть назначен свой датасет (сво-во таблицы «Dataset»), с номером равным порядковому номеру таблицы.
|
Почему должно совпадать. а если мне нужно создать вспомогательную выборку (как я делаю в своих программах если в БД не предусмотрены хранимые процедуры). Так значит пользоваться массивами, записями что ведет к ненужному раздуванию кода