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プロパティを編集します。