PowerTools ActiveReports for .NET 9.0J > ActiveReportsユーザーガイド > 概念 > ページレポート/RDLレポートの概念 > データのグループ化 |
ページレポートまたはRDLレポートでは、データを整理するようにグループ化を設定できます。もっとも一般的なグループ化のケースは、フィールドまたは式によってデータ領域でグループ化する方法です。
選択したデータ領域の種類により、以下の方法でデータをグループ化できます。
詳細については、「データ領域でのグループ化」を参照してください。
注意: 以下の手順は、Reelsデータベース(Reels.mdb)のMovieテーブルを使用しています。Reelsデータベース(..\ActiveReportsNET9\Data\Reels.mdb)へのアクセス権限が必要です。 |
ページレポートでは、レポートページ上でもグループ化できます。詳細は、「ページでのグループ化(ページレポートのみ)」を参照してください。
詳細行のグループ化は、ListおよびTableデータ領域で使用可能です。詳細の値を繰り返したくない場合に便利です。
例えば、ReelsデータベースのMovieテーブルのデータを使用して詳細行のグループ化を設定せずに公開(年)を元に映画名をグループ化した場合、作成された各映画に対して該当する公開(年)がすべて表示されます。
これに対して、「=Fields!YearReleased.Value」へ詳細行のグループ化を設定した場合、各年が一度のみ表示されます。
注意: 使用している詳細行のグループ化の式の結果が、データの各行に対して一意である場合(例:MovieID)は変化はありません。 |
データで親子の関係を示したい場合、再帰的階層を作成できます。実装するには、子グループに対する一意のIDフィールドと親グループに対するIDフィールドが必要となります。
例:Reelsデータベースより以下のSQLクエリを使用してデータを取得した場合。
SQLクエリ |
コードのコピー
|
---|---|
SELECT EmployeePosition.*, Employee.*, Employee_1.PositionID AS ManagerPosition FROM Employee AS Employee_1 RIGHT JOIN (EmployeePosition INNER JOIN Employee ON EmployeePosition.PositionID = Employee.PositionID) ON Employee_1.EmployeeID = Employee.ManagementID; |
Tableデータ領域で、=Fields.Item("EmployeePosition.PositionID").Value
フィールドを使用して詳細行のグループ化を設定できます。さらに、 =Fields!ManagerPosition.Value
フィールドを親グループとして、データで親子関係を示すことが可能です。
メモ: 親グループを設定する際、単一のグループ式のみ使用できます。 |
再帰的階層でデータをよりわかりやすいかたちで表示するには、レベル関数を使用します。この関数はテキストにインデントを追加し、親と子データの関係をさらに明確にします。実装するには、インデントしたいテキストボックスの Padding - Leftプロパティに式を設定します。
例えば、Tableデータ領域で上記の再帰的階層の例を実現するには、レベルによってインデントを設定したタイトルを持つテキストボックスのPadding - Leftプロパティに次の式を設定できます。
=Convert.ToString(2 + (Level()*10)) & "pt"