доступ к объектам

отредактировано 20:59 Раздел: FastReport 2.xx VCL
Как я понимаю, из встроенного скрипта нет доступа к объёктам вне отчёта, да?
Могу ли я каким-либо образом получить этот доступ?(мне надо напимер Data.ADOQuery.Next(), мастер не подходит)
ЗЫ FasyReport 2.47

Комментарии

  • отредактировано 20:59
    Доступ можно получить через переменные (TfrReport.OnGetValue).
    Вызов функций через пользовательские функции TfrReport.OnUserFunction.
  • отредактировано 20:59
    а где можно почитать поподробнее обо этом.
    в справке, приложенной FR, очень скупо всё описано
  • отредактировано 20:59
    Как использовать OnGetValue смотрите в демке Demos\prngrid
    OnUserFunction - аналогично.

    В скрипте упоминаете переменную. В обработчике присваиваете значение.
  • отредактировано 20:59
    цены бы не было FastReport'u, если б во внутренних скриптах был бы доступ к объектам приложения(хоть некоторый функционал), что позволило бы создавать практически произвольные отчёты имея лишь готовое приложение
  • отредактировано 20:59
    Smirnov Anton написал:
    Как я понимаю, из встроенного скрипта нет доступа к объёктам вне отчёта, да?
    Могу ли я каким-либо образом получить этот доступ?(мне надо напимер Data.ADOQuery.Next(), мастер не подходит)
    ЗЫ FasyReport 2.47
    Зачем?
  • отредактировано 20:59
    Зачем?
    хороший вопрос. За тем, чтоб получить доступ, например к объектам типа TDataSet.
    Вот сейчас мне,например, надо получить в одной строке записи из двух источников данных(предидущий и текущий период), просто мастер не подходит, приходится в он принт руками двигать оба датасета(и кол-во записей в них разное может быть), приходится писать обработчик в функции OnUserFunction, для чего надо ковырять исходники и перекомпиливать. А вот ,например, увезу приложение пользователю, через неделю он меня позовёт и скажет, надо кое что доделать/переделать, и в подобном случае придётся ковырять опять же исходники, вместо того, чтоб прямо на месте всё поправить.

    Да, вот ещё в догонку вопрос:
    OnUserFunction
    &p1,&p2,@p3 - как я понимаю входные параметры.
    ссылка(&) означает, что я могу изменить это значение и оно изменится в отчёте?
    val - то, что функция вернёт?
    как вызвать функцию с параметрами?
    [MOVE()] выходит, а [MOVE(p1,p2)] - нет?
  • отредактировано 20:59
    Smirnov Anton написал:
    Зачем?
    хороший вопрос. За тем, чтоб получить доступ, например к объектам типа TDataSet.
    Вот сейчас мне,например, надо получить в одной строке записи из двух источников данных(предидущий и текущий период), просто мастер не подходит, приходится в он принт руками двигать оба датасета(и кол-во записей в них разное может быть), приходится писать обработчик в функции OnUserFunction, для чего надо ковырять исходники и перекомпиливать. А вот ,например, увезу приложение пользователю, через неделю он меня позовёт и скажет, надо кое что доделать/переделать, и в подобном случае придётся ковырять опять же исходники, вместо того, чтоб прямо на месте всё поправить.

    Да, вот ещё в догонку вопрос:
    OnUserFunction
    &p1,&p2,@p3 - как я понимаю входные параметры.
    ссылка(&) означает, что я могу изменить это значение и оно изменится в отчёте?
    val - то, что функция вернёт?
    как вызвать функцию с параметрами?
    [MOVE()] выходит, а [MOVE(p1,p2)] - нет?
    Большую ошибку сделали, если в коде программы зашили логику отчета, почему не хотите всю логику реализовать в самом отчете(Дизайнере)? Это упрощает сопровождение в 10-ки раз. Отчет хранить в базе.
  • отредактировано 20:59
    написал:
    Большую ошибку сделали, если в коде программы зашили логику отчета, почему не хотите всю логику реализовать в самом отчете(Дизайнере)? Это упрощает сопровождение в 10-ки раз. Отчет хранить в базе.
    Ёпрст.
    И я о том же, не хочу логику отчёта зашивать в коде программы, но по другому не получается, ну никак не выходит, вот я и говорю, что нехватает доступа к объёктам, не хватает!
  • отредактировано 20:59
    Smirnov Anton написал:
    по другому не получается, ну никак не выходит, вот я и говорю, что нехватает доступа к объёктам, не хватает!
    Все там хватает.
    поподробнее что не получается?
  • отредактировано 20:59
    есть 2 источника данных(совместить нельзя, пусть будет нельзя)
    1 - ый - данные за предидущий отчётный период
    2 - ый - данные за текущий отчётный период
    в отчёте должно быть:
    шапка
    |на начало периода| ... |на конец периода|
    далее должны идти данные
    в первую колонку - из первого источника
    во вторую - из второго
    как такое проделать без ипользования собственных процедур?
  • отредактировано 20:59
    2 сабрепорта
  • отредактировано 20:59
    А я бы написал запрос с FULL OUTER JOIN и даже не запустил ни разу Делфи.
  • отредактировано 20:59
    елки палки
    скока раз повторять
    я не хочу править код програмы
    а про full outer join знаете не только вы
    и где интересно не запустив делфи не разу вы написали full outer join а потом в отчёте применили этот набор данных(причём период, с которым работает пользователь и который жаждет напечатать как бы узнать)

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

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