QuickRepで合計行を印字する

 QuickReportである項目ごとに集計するには TQRGroup と、TQRExpr コンポーネントを使用します。


今回は DBDEMOS のデータベースを使用します。DBDEMOSの Reservat テーブルの一覧を CustNoごとに Amt_Paid を集計して印刷してみます。

レポート用のフォームに TQueryを配置し、SQLを以下のように定義します。グループ化するフィールドでソートしておかないと不具合が生じます。ORDER BY で必ずグループ化するフィールドを並べ替えて下さい。

■ レポートで使用する SQL
SELECT
  *
FROM
  RESERVAT
ORDER BY
  CUSTNO

次に、TQuickRepを配置し、Bands プロパティの HasColumnHeader 、 HasDetail 、 HasPageFooter を True に設定します。レポート上にバンドが配置されます。次に TQuickRepの Datasetプロパティに先ほどの TQueryを指定します。
ColumnHeaderバンドには明細の見出しを、Detailバンドには明細用のコンポーネントを配置します。TQRDBTextを配置し、Dataset、DataFieldプロパティを設定してください。

次に、グループ化用のコンポーネント、TQRGroupを配置します。TQRGroupを選択してレポートの適当な場所をクリックするとグループバンドが自動的に適切な位置に配置されます。(これは変更可能です)
TQRGroupの Expressionプロパティでグループ化するフィールドを指定します。 [項目] ボタンをクリックすると項目名を検索することができます。ここでは Query1.CustNo と指定します。

次に TQRBandを配置し、TQRGroupの FooterBandプロパティでそのバンドを指定し、フッタバンドにします。TQRBandは下に移動します。

次に TQRExprをフッタバンドに配置します。

TQRExprの Expressionプロパティに集計用の式を登録します。

登録したら Query1の Activeプロパティを Trueにしてレポートのプレビューを表示します。合計が印字されているはずです。

明細のデータと同じように、¥マーク付きにする場合は TQRExprの Maskプロパティを編集します。