PowerTools ActiveReports for .NET 11.0J > ActiveReportsユーザーガイド > 概念 > ページレポート/RDLレポートの概念 > データのグループ化 |
ページレポート、RDLレポートでは、グループ化を設定してデータを整理することができます。もっとも一般的なグループ化のケースは、フィールドや式によってデータ領域でグループ化する方法です。
選択したデータ領域の種類により、以下の方法でデータをグループ化することができます。
詳細については、「データ領域でのグループ化」を参照してください。
メモ: 以下の手順は、Reelsデータベース(Reels.mdb)のMovieテーブルを使用しています。データの使用にはReelsデータベース(..\ActiveReportsNET11\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"