Вопрос: При работе с FastReport в Delphi пользователь столкнулся с ошибкой "Expression expected" при попытке напечатать отчет. Ошибка возникает при использовании процедуры Sendparams для передачи параметров отчета.
Решение проблемы:
Ошибка может возникнуть, если категория, используемая в AddVariable, не определена в отчете. Чтобы решить эту проблему, убедитесь, что категория, в данном случае "Bez", определена в отчете.
Присваивание переменных в отчете должно выполняться в формате "Memo1.Lines.Text := ;".
Значения переменных должны быть заключены в кавычки. Например, Sendparams(['buyer','delivery'], [QuotedStr('buyer address'), QuotedStr('delivery address')]).
Пример кода:
procedure Sendparams(const Pparams, pparvalues: array of string);
begin
for I := 0 to Length(Pparams) - 1 do
begin
lpar_name := Pparams[i];
lpar_val := pparvalues[i];
FfrxReport.Variables.AddVariable('Bez', lpar_name, lpar_val);
end;
end;
Sendparams(['buyer','delivery'], [QuotedStr('buyer address'), QuotedStr('delivery address')]);
Memo1.memo := '[buyer]';
Memo2.memo := '[delivery]';
Альтернативное решение:
Если вы хотите избежать использования открытых массивов строк, жесткой ссылки на отчет в Sendparams и обрабатывать переменные, уже определенные в отчете, вы можете использовать функцию PrepareReport. Пример кода:
Function PrepareReport(Report: TfrxReport; Variables: TfrxVariables; ReportName: String): Boolean;
var
i, k: Integer;
begin
// ....... other initializations
if Assigned(Variables) then
for i := 0 to Variables.Count - 1 do
begin
k := Report.Variables.IndexOf(Variables.Items[i].Name);
if k > -1 then
Report.Variables.Items[k].Value := Variables.Items[i].Value
else
begin
with Report.Variables.Add do
begin
Name := Variables.Items[i].Name;
Value := Variables.Items[i].Value;
end;
end;
end;
end;
Заключение:
При работе с FastReport в Delphi пользователь может столкнуться с ошибкой "Expression expected". Решением проблемы может быть правильная настройка категорий в отчете, корректное присваивание переменных и заключение значений переменных в кавычки. Альтернативным решением может быть использование функции PrepareReport для обработки переменных в отчете.
Пользователь столкнулся с ошибкой 'Expression expected' при работе с FastReport в Delphi и ищет решение для корректной передачи параметров отчета.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS