Переменные

отредактировано 20:38 Раздел: FastReport 3.0
В отчете создана переменная STK.
В run-time этой переменной присваивается значение:
if Rep_Kassa.LoadFromFile('KsrD.fr3') then
 begin
...
        Rep_Kassa.Variables['STK']     := 'строка';
...
        Rep_Kassa.ShowReport;
 end;
Отчет формируется до того Мемо в котором прописан на вывод [STK]
И выдается ошибка:
Мемо101: Ошибка в выражении 'строка': ';' expected
дальше отчет не формируется.
FR 3.19

Подскажите как избавится от этой ошибки.

Комментарии

  • отредактировано 20:38
    Rep_Kassa.Variables := ''''+'строка'+'''';
  • отредактировано 20:38
    Спасибо. Не подумал об этом. Все работает.
  • отредактировано January 2011
    В поддержание темы, так сказать...
    Передача параметров выполнялась так:
    ...
    PrintDataModule.frxReport.Variables['NC']:=IBQCertSelectNC.AsString;  //integer 
    PrintDataModule.frxReport.Variables['GC']:=IBQCertSelectGC.AsString;  //string
    ...
    
    В каждом Memo отчёта было прописано:
    [NC]
    и
    [GC]
    соответственно. Ругалось сабжевой ошибкой именно на 2-й параметр. Всё заработало, когда написал так:
    ...
    PrintDataModule.frxReport.Variables['NC']:=IBQCertSelectNC.AsString;
    PrintDataModule.frxReport.Variables['GC']:=''''+IBQCertSelectGC.AsString+'''';
    ...
    
    Весьма странное поведение, но где-то в глубине души я его (ФР) понимаю... :)
  • gpigpi
    отредактировано 20:38
    Никогда не читайте документацию - это бесполезное занятие
    написал:
    Следует отметить важный момент. При обращении к переменной, определенной в списке переменных, происходит вычисление ее значения, если тип переменной – строковый. Это означает, что переменная со значением Table1."Field1" вернет на самом деле значение поля БД, а не строку 'Table1."Field1"'. При присвоении строковых значений таким переменным следует быть осторожным. Например, при выполнении отчета следующий код вызовет ошибку "переменная test не определена":
    frxReport1.Variables := 'test';
    поскольку FastReport при обращении к переменной My Variable будет пытаться вычислить ее значение. Правильно передавать строковые переменные надо так:
    frxReport1.Variables := '''' + 'test' + '''';
    В этом случае значение переменной – строка 'test' – будет выведено без ошибок. Однако учтите два важных ограничения при использовании такого метода:
    - в строке не должно быть одинарных кавычек. Все одинарные кавычки надо продублировать;
    - в строке не должно быть символов #13#10.
    Учитывая вышесказанное, в некоторых случаях удобнее передавать значения переменных через скриптовые переменные.
  • отредактировано January 2011
    gpi, да это я знал. Просто решил освежить тему, что ли. В любом случае спасибо за напоминание! Тем более, что с FR работаю плотно аж 2-й день... :)

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

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