QuickRepでグループ印刷をする

 QuickReportである項目でグループ化した印刷、ある項目でブレイクする帳票を作る方法です。グループ化するには TQRGroup バンドを配置し、Excpressionプロパティを設定します。手順を説明します。


今回は DBDEMOS のデータベースを使用します。DBDEMOSの Custoly テーブルの一覧を Country でグループ化して印刷してみます。

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

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

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

次に、グループ化用のコンポーネント、TQRGroupを配置します。TQRGroupを選択してレポートの適当な場所をクリックするとグループバンドが自動的に適切な位置に配置されます。(これは変更可能です)

TQRGroupの Expressionプロパティでグループ化するフィールドを指定します。 [項目] ボタンをクリックすると項目名を検索することができます。ここでは Query1.Country と指定します。

TQRGroupバンド上に TQRDBTextを配置し、DataFieldプロパティで "Country" を指定します。これでグループバンド印刷時に Country フィールドの内容を印字できます。

ここまで出来たら、TQueryの Activeプロパティを Trueにして TQuickRepを右クリックして "プレビュー"を選んでみて下さい。印刷プレビューが表示されます。

このように、Countryフィールドでブレイクして印字されます。また、Countryフィールドがブレイクしたら改ページしたい、と言う場合は TQRGroupの ForceNewPageプロパティを True に設定します。