Ошибка в выражении при попытке считать значение пе
При переходе с версии 2.55 столкнулся с следующей проблемой. При попытке считать значение переменной, выскакивает ошибка в выражении???
Раньше в версии 2.55 использовал такой код в DialogPage:
if [Выбрать документы] <>'Все'
Then QTovar.SQL.Add('Where Types in ('''+[Выбрать документы]+''')')
Else QTovar.SQL.Add('Where Types is not null');
значение переменной [Выбрать документы] - 'возврат','расход'
пробывал закрыть их в скобки ''возврат','расход'' тоже не проходит, вылезает ошибка.
обращаться к переменной пытался и так:
if VarToStr([Выбрать документы]) <>'Все'
....
и все равно выдает ошибку.
подскажите что делаю не так?
Спасибо.
Раньше в версии 2.55 использовал такой код в DialogPage:
if [Выбрать документы] <>'Все'
Then QTovar.SQL.Add('Where Types in ('''+[Выбрать документы]+''')')
Else QTovar.SQL.Add('Where Types is not null');
значение переменной [Выбрать документы] - 'возврат','расход'
пробывал закрыть их в скобки ''возврат','расход'' тоже не проходит, вылезает ошибка.
обращаться к переменной пытался и так:
if VarToStr([Выбрать документы]) <>'Все'
....
и все равно выдает ошибку.
подскажите что делаю не так?
Спасибо.
Комментарии
пробывал и так:
if <Выбрать документы> <>'Все'
Then ;
и вот так:
s:= VarToStr(<Выбрать документы>);
if s <>'Все'
Then ;
т.е. ошибка вылезает не на моменте заполнения SQL запроса... в том то и суть.
причем заметил что ошибка вылезает как только появляется запятая меду значениями. если пользовательзадает тип документов для выборки однозначение 'расход' или 'возврат' и т.д. то все велликолепно работает.
в процедуре TfrxExpressionCache.Calc(const Expression: String; var ErrorMsg: String; AScript: TfsScript): Variant;
....
if CompareText(FScriptLanguage, 'PascalScript') = 0 then
FScript.Lines.Text := 'function fr3f' + IntToStr(i) + ': Variant; begin ' +
'Result := ' + Expression + ' end; begin end.'
....
естественно когда переменная имеет значение ''возврат'' она передается в скрипт как 'возврат' и ошибки не возникает.
У меня передается значение ''расход','возврат'' при передачи в скрипт для компиляции получается текст типа 'function fr3f1: Variant; begin Result := 'Возврат','Расход' end; begin end.'
что естественно вызовет ошибку.
ВОПРС: как решить проблемку, передаю вроде правильно переменную как и описано разработчиком закрывая значения в две одиночные ковычки:
''расход','возврат'' как и все переменные.
Я не могу определить заранее какие переменные какие значения будут иметь, поэтому заранее закрыть еще одни ковычки не получится. Если закрыть лишними то тоже вызовет ошибку.
Скриптовую переменную использвать необязательно. Просто я пытался закрывать в кавычки всю переменную, а про внутренние кавычки забыл совсем. Пришлось в обработчике чтения переменной добавить условия:
...
if (pos(''',''',s)>0) and (pos(''''',''''',s)=0)
Then frxReport.variables[VariableList]:=''''+ReplaceStr(s,''',''',''''',''''')+''''
Else frxReport.variables[VariableList]:=''''+s+''''
....