我正在尝试使用fastreport和delphi执行以下操作。我有一份包含......
的报告GroupHeader ------->客户推销员的关键 MasterData ------->客户名称,余额 GroupFooter ------->销售员-1的总和(余额) MasterData ------->客户名称,余额 GroupFooter ------->销售员-2的总和(余额) MasterData ------->客户名称,余额 GroupFooter ------->销售员-3的总和(余额) 。 。 。 MasterData ------->客户名称,余额 GroupFooter -------> Salesman-N的总和(余额)
====>这里想要: 页脚-2 -------> SUM(销售员-1的总和(余额),销售员-2的总和(余额),销售员-3的总和(余额))(仅限!!!)
ReportFooter -------->客户总余额。
有没有人想过使用fastreport脚本引擎解决问题?
谢谢。
答案 0 :(得分:2)
我会创建一个报告全局变量'salessum'
var
salessum: extended;
procedure MYReportOnStartReport(Sender: TfrxComponent);
begin
salessum := 0.0;
end;
在细节带的OnBeforePrint事件中,如果它是所需的销售人员之一,则增加salessum。
procedure MYReportDetailBeforePrint(Sender: TfrxComponent);
begin
if (mydata.salesmankey = "key 1") or (mydata.salesmankey = "key2") or (...) then
begin
salessum := salessum + mydata.amount;
end;
end;
如果您希望在报告末尾添加额外的金额,则添加报告摘要带,并在OnBeforePrint事件中将相应文本字段的值设置为salessum的格式化字符串。
procedure MYReportSummaryBeforePrint(Sender: TfrxComponent);
begin
txtMyBestSalesMenTotal.Text := FormatFloat('#,##0.00', salessum);
end;
或者,如果您希望在销售人员3小计之后立即添加额外的金额,然后在销售人员组页脚带中添加文本字段,并在OnBeforePrint事件中将其visible属性设置为true / false,具体取决于您当前正在处理的销售人员密钥并将其值设置为salessum的值。您还需要确保乐队自动伸展。
我已经开始使用脚本和报告变量完成所有求和,因为它变得更容易控制它们何时何地应该递增或重置或打印等。使用内置求和函数(在任何报告系统中)仅对非常直接的总数有用 - 由于某些原因,我的报告很少。
希望这是有道理的(并且正是你实际想要实现的目标!)。