2

我有打印问题

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;

Sendparams(['buyer','delivery'], ['buyer address', 'delivery address']);

在我尝试打印报告之前一切正常;它说: Memo2 上的预期表达。

Memo1.memo = '[buyer]';
Memo2.memo = '[delivery]';

memo1 和 memo2 所有其他属性都是一样的。有什么建议么?

4

1 回答 1

3

有不同的可能陷阱。

  1. 如果您想使用Addvariable(而不是variables.add)类别,在您的情况下Bez必须在报告中定义,否则将不会添加变量。**
  2. 报告中变量的分配必须看起来像Memo1.Lines.Text :=<buyer>;
  3. 您必须引用变量的字符串值
    Sendparams(['buyer','delivery'], [QuotedStr('buyer address'), QuotedStr('delivery address')]);

**在此处输入图像描述

另一种尝试可能是这样的,以避免开放的字符串数组(其中名称和值的计数可能会意外地不同),以避免对报告中的硬引用Sendparams并处理已经可以在报告中定义的变量。

Function PrepareReport(Report:TfrxReport; Variables: TfrxVariables;
                       ReportName: String):Boolean;// -- other parameters
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;
于 2013-08-18T07:26:47.470 回答