Переменная как строка
В отчет передаю переменную вот так
S := Q.SelectSQL.Text;
AddReportVar('FSqlText', '''' + s + '''');
на диалаговую форму кнопку на он клик кнопки
procedure Button1OnClick(Sender: TfrxComponent);
begin
QNotify.Sql.text := <FSqlText>;
QNotify.Open;
end;
'Ошибка в выражении ''SELECT *'#$D#$A'FROM PROC_V_NOTIFY(Null, Null, 1, 6400, 1, Null, Null)'#$D#$A#$D#$A'ORDER BY RAPPARTS'#$D#$A''': Expression expected'
выскакивает 2 ексепшника.
убираем
в обработчике кнопку
кидаем мемо в отчет
там добавляем
[<FSqlText>]
хочу вывести все что находится в переменной
тоже самое ошибки.
Комментарии
#$D#$A
То все начинает работать.
Но как зато начинает вести себя фаст когда присутствуют эти символы..
Это надо смотреть.
поэтому и стал писать
AddReportVar('FSqlText', '''' + s + '''');
ты попробуй и посмотри скока ошибок вываливается
и как себя ведет фаст после этого
В этом случае значение переменной – строка 'test' – будет выведено без ошибок. Однако учтите два важных ограничения при использовании такого метода:
- в строке не должно быть одинарных кавычек. Все одинарные кавычки надо продублировать;
- в строке не должно быть символов #13#10.
Учитывая вышесказанное, в некоторых случаях удобнее передавать значения переменных через скриптовые переменные.
Задача: передать текст вида в Memo, находящийся в PageHeader'e. Набор этих строк определяется настройками для каждого конкретного случая. Вариант "1 Memo = 1 строка" не подходит (информация немного не та, что указана в примере; да и в любом случае хочется вкусить радость от передачи многострокового параметра ).
Итак, что я делаю...
1. В Delphi:
- формирую переменную DataString (глобальная, string), добавляя к ней "#13#10" в конце по типу: - в событии OnGetValue frxReport'a пишу: (подсмотрено в выводе массива, стр.29 + исходник в Demos'e)
2. В FastReport'e:
- собственно, на PageHeader бросаю Memo с текстом: Не уверен, что правильно, но у меня работает... правда, не совсем так, разумеется. Пробовал, как на стр.36 написано, что-то типа: - нихт арбайтен (уверен, что-то где-то недокрутил).
Как заставить ФР правильно воспринимать "#13#10" и "делать мне приятно", вместо вывода "колбасы" а-ля ?
Подскажите, плз, в каком месте я прыгаю на граблях? Серьёзно, вроде бы не дурак, но чего-то не осилю...
Для тех, кто такой же любитель граблей (если таковых нет, то пишу сам для себя - а вдруг забуду! ):
Причин было 2... а может и 1. Короче говоря, пишу "рабочий" вариант:
1. В Delphi:
1.1 Примечание: добавляю '|', т.к. считываемые из Query данные тоже содержат '|' - признак новой строки. После окончания формирования произвожу замену на "честное и благородное" "#$D#$A" (строго без всевозможных кавычек в StringReplace!!!)
1.2 Убираем OnGetValue frxReport'a - он как папаха матросу.
2. В FastReport'e:
2.1 В нужном Memo прописываю: 2.2 В событии OnBeforePrint к Memo пишу: Запускаю и балдеююю...
Всем спасибо, кто не успел с ответом! Видать, и вправду, заработался я... (((
Проблема-то вообще идиотская оказывается!!! (аж стыдно)
FR выводил "колбасой", потому что я сам... подсовывал ему эту "колбасу"!
В Memo достаточно прописать: без всяких BeforePrint.
Корни проблемы - в п.1.1 предыдущего поста. Ужас! Как всё до безумия просто оказывается...