Передача параметров

отредактировано 02:36 Раздел: FastReport 2.xx VCL
Проблема следующая:
Хочу передать в отчет набор параметров из программы. При этом стандартный диалог fast report для задания параметров открывать не хочется.
Может кто знает, как это сделать?

Комментарии

  • отредактировано 02:36
    Я посмотрел исходники FastReport (функция GetVariableValue) и мне кажется,
    что есть возможность достучаться из программы до переменных через свойство

    FR.Dictionary.Variables


    Simon
  • отредактировано 02:36
    P.S.

    Или переменную frVariables:TfrVariables из модуля FR_Class
  • отредактировано 02:36
    Добраться-то я добрался. Вот только диалог все-равно выводится. Даже если на нем ничего кроме Query нет
  • отредактировано 02:36
    FAQ читали?

    2.25. Как передать значение из программы в отчет?

    Есть несколько способов. Первый: использовать глобальный объект frVariables
    (описан в FR_Class):

    frVariables := 10;

    создает переменную My variable со значением 10. Это способ подходит,
    если в отчет нужно передать статическую информацию (т.е. не меняющуюся
    в течение построения отчета).
    Второй способ: использовать событие TfrReport.OnGetValue. Этот способ
    подходит для передачи в отчет информации, которая может меняться от
    записи к записи:

    procedure TForm1.frReport1GetValue(ParName: String; var ParValue: Variant);
    begin
    if ParName = 'MyField' then
    ParValue := Table1MyField.Value;
    end;

    И, наконец, третий способ: программно заполнить список переменных.

    with frReport1.Dictionary do
    begin
    Variables := 'CustomerData.Customers."CustNo"';
    Variables := '10';
    end;


    (а можно ли передать значение из отчета обратно в программу?)

    Можно - используйте объект frVariables. Если в отчете написать в скрипте
    одного из объектов:

    MyVariable := 10

    то в программе значение MyVariable можно достать так:
    v := frVariables;

  • отредактировано 02:36
    Пытаюсь использовать переменную Dictionary. Все равно выдает диалог, на котором расположен query отчета. Дословно делаю следующее:

    frReport1.LoadFromFile('Untitled.frf');
    frReport1.Dictionary.Variables := StrToInt(Edit1.Text);
    frReport1.ShowReport;

    Предварительно сохранил отчет в файл Untitled.frf.
    В редакторе парамеиров отчета выставлено par=[V1]
    Ну и понятно переменная V1 тоже заведена в отчете.

    Может можно как-нибудь принудительно отключить появление диалога?
  • отредактировано 02:36
    О каком диалоге идет речь? Если на диалоговой форме нет контролов, а есть только невизуальные компоненты, форма показана не будет. Если только... вы не пользуетесь старым менеджером данных.
  • отредактировано 02:36
    Вероятнее всего там действительно был старый менеджер данных. После переустановки fast report все заработало нормально. Спасибо всем за советы.

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

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