HTML-подобные отчеты

отредактировано 19:43 Раздел: FastReport 2.xx VCL
Здравствуйте ! Использую 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, где номер страницы делаем равным номеру дня, передаем этот номер внешней проге (как ???), которая закрывает месячный отчет и открывает дневной с почасовкой за день, номер которого равен странице, на которую нас хотели отправить...)

Комментарии

  • отредактировано 19:43
    Это возможно.
    Во-первых, надо как-то идентифицировать объект, на котором кликнули. Для этого все объекты строки должны содержать Id записи в своем св-ве Tag. Туда можно поместить, например, строку [query1."data"].
    Во-вторых, обработка щелчка на объекте. Делается с помощью TfrReport.OnObjectClick. При этом надо вытащить значение св-ва Tag кликнутого объекта и использовать его как условие where для построения детального отчета.
  • отредактировано 19:43
    То есть в любом случае обработка клика идет внешней программой или dll ?
    А внутри репорта его средствами не справится ?
  • отредактировано 19:43
    Нет, исключено.

Оставить комментарий

Многофункциональный текстовый редактор. Чтобы отредактировать стиль параграфа, нажмите TAB, чтобы перейти к меню абзаца. Там вы можете выбрать стиль. По умолчанию не выбран ни один стиль. Когда вы выберете текст, появится встроенное меню форматирования. Нажмите TAB, чтобы войти в него. Некоторые элементы, такие как многофункциональные вставки ссылок, картинок, индикаторов загрузки и сообщений об ошибок могут быть вставлены в редактор. Вы можете перемещаться по ним, используя стрелки внутри редактора и удалять с помощью клавиш delete или backspace.