HTML-подобные отчеты
Здравствуйте ! Использую FastReport 2.53. Очень хотелось бы узнать, можно ли реализовать отчет, строки которого ссылались бы на другой отчет или другую страницу.
Например: есть форма, которая с помощью Query1:TfrADOQuery (exec mounth 'data') получает из хранимой на SQL сервере процедуры mounth таблицу данных по дням месяца (дата текущая или вводится тут же,в диалоговой форме), т.е.
День ** **
! 1 авг 04 ! 3434 ! 545 !
! 2 авг 04 ! 5655 ! 565 !
etc...
Можно ли щелчком мыши по строке дня _открыть другой отчет_ или новую страницу этого, чтобы выполнить Query2:TfrADOQuery (exec day 'День'), возвращающую почасовку того дня, на котором кликнули, т.е.
За 2 авг 04:
! 1:00 ! 3434 ! 4534! 545!
! 2:00 ! 34 ! 343 ! 34 !
etc...
Прочитал про ссылки на другие страницы во время предварительного просмотра, может их использовать ? Можно ли в свойстве Tag объекта TfrMemoView писать что-либо кроме вызова страницы @page ?
Как использовать свойство ReportType = rtMultiple у компонента TfrReport ?
Может использовать SubReport, невидимый до того, пока не кликнули на строку с днем?
Читаем
***
2.19. Как "отключить" отдельные страницы отчета?
Добавьте в отчет пустую диалоговую форму и в ее скрипте (OnActivate) напишите:
begin
Page2.Visible := False // скрываем страницу с именем Page2
end
***
Может скрыть вторую страницу с готовой почасовой формой, а при клике на строке дня передать 'День' Query2 (exec day 'День'), выполнить запрос и сделать страницу видимой ?
Или всё это в принципе невозможно ? ИМХО, было бы очень удобно. Может такое есть в FR 3.0 ?
Надеюсь получить ответ.
P.S. Если писать внешний обработчик в СБилдере6, то _как ловить_ клик на строке (т.е. делаем имя мемо URL, в тэге пишем @page, где номер страницы делаем равным номеру дня, передаем этот номер внешней проге (как ???), которая закрывает месячный отчет и открывает дневной с почасовкой за день, номер которого равен странице, на которую нас хотели отправить...)
Например: есть форма, которая с помощью Query1:TfrADOQuery (exec mounth 'data') получает из хранимой на SQL сервере процедуры mounth таблицу данных по дням месяца (дата текущая или вводится тут же,в диалоговой форме), т.е.
День ** **
! 1 авг 04 ! 3434 ! 545 !
! 2 авг 04 ! 5655 ! 565 !
etc...
Можно ли щелчком мыши по строке дня _открыть другой отчет_ или новую страницу этого, чтобы выполнить Query2:TfrADOQuery (exec day 'День'), возвращающую почасовку того дня, на котором кликнули, т.е.
За 2 авг 04:
! 1:00 ! 3434 ! 4534! 545!
! 2:00 ! 34 ! 343 ! 34 !
etc...
Прочитал про ссылки на другие страницы во время предварительного просмотра, может их использовать ? Можно ли в свойстве Tag объекта TfrMemoView писать что-либо кроме вызова страницы @page ?
Как использовать свойство ReportType = rtMultiple у компонента TfrReport ?
Может использовать SubReport, невидимый до того, пока не кликнули на строку с днем?
Читаем
***
2.19. Как "отключить" отдельные страницы отчета?
Добавьте в отчет пустую диалоговую форму и в ее скрипте (OnActivate) напишите:
begin
Page2.Visible := False // скрываем страницу с именем Page2
end
***
Может скрыть вторую страницу с готовой почасовой формой, а при клике на строке дня передать 'День' Query2 (exec day 'День'), выполнить запрос и сделать страницу видимой ?
Или всё это в принципе невозможно ? ИМХО, было бы очень удобно. Может такое есть в FR 3.0 ?
Надеюсь получить ответ.
P.S. Если писать внешний обработчик в СБилдере6, то _как ловить_ клик на строке (т.е. делаем имя мемо URL, в тэге пишем @page, где номер страницы делаем равным номеру дня, передаем этот номер внешней проге (как ???), которая закрывает месячный отчет и открывает дневной с почасовкой за день, номер которого равен странице, на которую нас хотели отправить...)
Комментарии
Во-первых, надо как-то идентифицировать объект, на котором кликнули. Для этого все объекты строки должны содержать Id записи в своем св-ве Tag. Туда можно поместить, например, строку [query1."data"].
Во-вторых, обработка щелчка на объекте. Делается с помощью TfrReport.OnObjectClick. При этом надо вытащить значение св-ва Tag кликнутого объекта и использовать его как условие where для построения детального отчета.
А внутри репорта его средствами не справится ?