автономный отчет со сложной логикой

отредактировано 00:49 Раздел: FastReport 2.xx VCL
Можно ли сделать автономный отчет со следующей логикой:
1. Задаются параемтры отчета и формируется сам отчет
2. После этого (как пользователь закрыл окно preview) нужно пользователю задать вопрос с вариантами ответа ДА/НЕТ.
3. Если пользователь ответил утвердительно, то нужно:
3.1. Выполнить ХП на сервере
3.2. Сформировать еще два отчета

пункты 1, 3.1 и частично 3 я могу сделать а как выполнить остальные пункты, если это конечно возможно в рамках одного шаблона.

Комментарии

  • отредактировано 00:49
    написал:
    2. После этого (как пользователь закрыл окно preview) нужно пользователю задать вопрос с вариантами ответа ДА/НЕТ.

    Это к отчёту вообще никакого отношения не имеет... Что-либо в шаблоне отчёта можно делать только на этапе его (отчёта) формирования.
    Окно просмотра запускается уже после формирования отчёта - на этом этапе шаблон вообще уже никто ниочём не спрашивает ;) )
  • отредактировано 00:49
    хорошо.
    тогда возможно ли реализовать так:
    1. диалоговое окно с параметрами отчета. если юзер нажал кнопку с modalresult = mrOk, то идем далее, иначе выход
    2. диалоговое окно с запросом и вариантами ответа Да/Нет
    3. формирование основного отчета (состоит из 2 листов)
    4. если на шаге 2 был выбран ответ Нет, то выход. иначе
    5. выполнение ХП на сервере (используются установки на шаге 1)
    6. формирование дополнительного отчета.
  • отредактировано 00:49
    написал:
    6. формирование дополнительного отчета.

    Возвращается к тому с чего начали ...
    Не может формирование отчёта запустить формирование другого отчёта ;) )
  • отредактировано 00:49
    жалко. придется разбивать на два отчета...
    у страницы отчета есть событие onBeforePrint. может можно как нибудь его заюзать для нужной страницы?
  • отредактировано 00:49
    написал:
    жалко. придется разбивать на два отчета...
    Ну можно и в одном всё сделать, только принятие решения "печатать второй отчёт или нет" ты должен принимать до формирования всех отчётов. Я не знаю твоей постановки - может тебе это и не подойдёт ...
    написал:
    у страницы отчета есть событие onBeforePrint. может можно как нибудь его заюзать для нужной страницы?
    Тебе решать - ты ведь разработчик ;) )
  • отредактировано 00:49
    а как примерно может выглядеть обработчик Page4.onBeforePrint при следующей струкрутре отчета:
    Page1, Page2 - страницы основного отчета
    Page3 - диалог с параметрами отчета
    Page4 - страница основного отчета

    if MessageBox(.....)=mrCancel then StopReport
    else begin
    // вызов ХП
    end;

    или нужно как-то по другому?
  • отредактировано 00:49
    ага, такой код работает ;)
    правда получается пустой лист, но это уже не существенно.
    гранд мерси.
  • отредактировано 00:49
    отчет работает, но не совсем так как ожидалось, а именно:
    отчет имеет одну страницу диалога (параметры отчета, датасеты - frODACQuery) и три страницы отчетов. третья страница имеет такой код на onBeforePrint:
    begin
      if MessageBox('Вы действительно хотите произвести оплату?', 'Оплата', mb_YesNo + mb_IconQuestion)=mrNo then StopReport
      else begin
        sp.sql.clear;
        sp.sql.Add('begin');
        sp.sql.Add('pf.pkg_agent.PaymentСontracts('''+
                       [FORMATDATETIME('dd.mm.yyyy', d1.date)]+''','''+
                       [FORMATDATETIME('dd.mm.yyyy', d2.date)]+''');');
        sp.sql.Add('end;');
        sp.execsql;
      end;
    end
    
    процедура pf.pkg_agent.PaymentСontracts делает обоработку данных и формирует лог во временной таблице.
    и третья страница отчета выводит этот лог в читабельном виде и вот тут идут проблемы, а именно при первом прогоне процедура pf.pkg_agent.PaymentСontracts отрабатывает нормально в таблицу пишутся данные, но фаст их не видит. приводим базу в исходное состояние, заново запускаем отчет и тогда третья страница формируется нормально.
    в чем тут может быть дело?

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

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