5

私はfastreportとdelphiで次のことをしようとしています。含むレポートがあります...

GroupHeader -------> 顧客 Salesman MasterData のキー -------> CustomerName、Balance GroupFooter -------> Salesman-1 MasterData の Sum(Balance) ------- > CustomerName、Balance GroupFooter -------> Sum(Balance) of Salesman-2 MasterData -------> CustomerName、Balance GroupFooter -------> Sum(Balance) of Salesman-3 . . . MasterData -------> CustomerName、Balance GroupFooter -------> Sum(Balance) of Salesman-N

====> ここに : Footer-2 -------> SUM( Sum(Balance) of Salesman-1, Sum(Balance) of Salesman-2, Sum(Balance) of Salesman-3 ) (それだけ !!!)

ReportFooter --------> 顧客残高合計。

fastreport スクリプト エンジンの問題を解決するアイデアはありますか?

ありがとうございました。

4

1 に答える 1

2

レポートグローバル変数「salessum」を作成します

var
  salessum: extended;

procedure MYReportOnStartReport(Sender: TfrxComponent);
begin
  salessum := 0.0;
end;

詳細バンドの OnBeforePrint イベントで、希望する販売員の 1 人である場合、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 イベントで、現在処理しているセールスマン キーに応じてその可視プロパティを true/false に設定し、値を salessum の値に。また、バンドが自動的に伸びることを確認する必要があります。

スクリプトとレポート変数を使用してほとんどすべての集計を開始しました。いつ、どこでインクリメント、リセット、印刷などを制御するのが非常に簡単になったからです。(任意のレポート システムで) 組み込みの合計関数を使用すると便利なだけです。非常に単純な合計 - なんらかの理由で、私のレポートはほとんどありません。

それが理にかなっていることを願っています(そして、あなたが実際に達成しようとしていることです!)。

于 2010-09-07T06:59:28.493 に答える