| GrapeCity ActiveReports for .NET 12.0J > ActiveReportsユーザーガイド > サンプルとチュートリアル > チュートリアル > セクションレポートのチュートリアル > レイアウト > アンバウンドレポートでのグループ化 |
ActiveReportsでは、アンバウンドレポート内でグループ化することができます。グループ化の設定は、テキストボックスのDataFieldプロパティを使用するのと同じ要領で、グループヘッダのDataFieldプロパティを使用して、データベースからグループ化するデータを取得します。
このトピックでは、以下のタスクを行います。
![]() |
メモ: このチュートリアルは、Northwindデータベース(NWind.mdb)のテーブルを使用しています。使用にはNorthwindデータベース(..ActiveReportsNET12\Data\NWind.mdb)へのアクセス権限が必要です。 |
チュートリアルを完了すると、次のレポートが作成されます。
VisualStudioプロジェクトにActiveReportを追加する
詳細については、「プロジェクトにレポートを追加する」を参照してください。
レポートをデータソースに接続するためにコードを追加する
Visual Basic
| Visual Basicコード (ReportStartイベントの上に貼り付けます) |
コードのコピー
|
|---|---|
Dim connection As System.Data.OleDb.OleDbConnection Dim reader As System.Data.OleDb.OleDbDataReader |
|
| Visual Basicコード (ReportStartイベント内に貼り付けます) |
コードのコピー
|
|---|---|
'データ接続を作成し、必要に応じデータソースのパスを変更する
Dim connectionString As String
connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Program Files\ActiveReportsNET12\Data\Nwind.mdb"
connection = New System.Data.OleDb.OleDbConnection(connectionString)
connection.Open()
Dim sqlString As String
sqlString = "SELECT * FROM categories INNER JOIN products ON categories.categoryid= products.categoryid ORDER BY categories.CategoryID"
Dim command As New System.Data.OleDb.OleDbCommand(sqlString, connection)
'データを取得する
reader = command.ExecuteReader()
|
|
C#
| C#コード (ReportStartイベントの上に貼り付けます) |
コードのコピー
|
|---|---|
private System.Data.OleDb.OleDbConnection connection; private System.Data.OleDb.OleDbDataReader reader; |
|
| C#コード (ReportStartイベント内に貼り付けます) |
コードのコピー
|
|---|---|
//データ接続を作成し、必要に応じデータソースのパスを変更する string connectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Program Files\ActiveReportsNET12\Data\Nwind.mdb"; connection=new System.Data.OleDb.OleDbConnection(connectionString); connection.Open(); string sqlString = "SELECT * FROM categories INNER JOIN products ON categories.categoryid = products.categoryid ORDER BY categories.CategoryID"; System.Data.OleDb.OleDbCommand command = new System.Data.OleDb.OleDbCommand(sqlString, connection); //データを取得する reader = command.ExecuteReader(); |
|
レポートのレイアウトを作成する
| プロパティ名 | プロパティの値 |
|---|---|
| Name | ghCategories |
| BackColor | Silver |
| CanShrink | True |
| DataField | CategoryID |
| GroupKeepTogether | All |
| KeepTogether | True |
TextBox1
| プロパティ名 | プロパティの値 |
|---|---|
| DataField | CategoryName |
| Name | txtCategoryName |
| Text | カテゴリー名 |
| Location | 0, 0 in |
| Size | 2, 0.2 in |
| ForeColor | Blue |
| BackColor | Silver |
| Font Size | 12 |
| Font Bold | True |
TextBox2
| プロパティ名 | プロパティの値 |
|---|---|
| DataField | Description |
| Name | txtDescription |
| Text | 説明 |
| Location | 0, 0.3 in |
| Size | 6, 0.2 in |
Label1
| プロパティ名 | プロパティの値 |
|---|---|
| Name | lblProductName |
| Text | 商品名 |
| Location | 0, 0.6 in |
| Font Bold | True |
Label2
| プロパティ名 | プロパティの値 |
|---|---|
| Name | lblUnitsInStock |
| Text | 在庫 |
| Location | 4.4, 0.6 in |
| Font Bold | True |
| Alignment | Right |
TextBox1
| プロパティ名 | プロパティの値 |
|---|---|
| DataField | ProductName |
| Name | txtProductName |
| Text | 商品名 |
| Location | 0, 0 in |
| Size | 4, 0.2 in |
TextBox2
| プロパティ名 | プロパティの値 |
|---|---|
| DataField | UnitsInStock |
| Name | txtUnitsInStock |
| Text | 在庫 |
| Location | 4.4, 0 in |
| Alignment | Right |
Label
| プロパティ名 | プロパティの値 |
|---|---|
| DataField | TotalLabel |
| Name | lblTotalLabel |
| Location | 2, 0 in |
| Size | 2.4, 0.2 in |
TextBox
| プロパティ名 | プロパティの値 |
|---|---|
| DataField | ProductName |
| Name | txtTotalItems |
| Text | 全アイテム |
| Location | 4.4, 0 in |
| SummaryType | SubTotal |
| SummaryFunc | Count |
| SummaryRunning | Group |
| SummaryGroup | ghCategories |
| Alignment | Right |
Line
| プロパティ名 | プロパティの値 |
|---|---|
| Name | Line1 |
| LineWeight | 3 |
| X1 | 1.2 |
| X2 | 6.45 |
| Y1 | 0 |
| Y2 | 0 |
DataInitializeイベントを使用して、レポートのフィールドコレクションにフィールドを追加する
![]() |
注意: FieldCollectionには、DataInitializeイベントまたはFetchDataイベントを使用してアクセスしてください。他のイベントからアクセスした場合、動作は保障されません。 |
Visual Basic
| Visual Basicコード (DataInitializeイベント内に貼り付けます) |
コードのコピー
|
|---|---|
Fields.Add("CategoryID")
Fields.Add("CategoryName")
Fields.Add("ProductName")
Fields.Add("UnitsInStock")
Fields.Add("Description")
Fields.Add("TotalLabel")
|
|
C#
| C#コード (DataInitializeイベント内に貼り付けます) |
コードのコピー
|
|---|---|
Fields.Add("CategoryID");
Fields.Add("CategoryName");
Fields.Add("ProductName");
Fields.Add("UnitsInStock");
Fields.Add("Description");
Fields.Add("TotalLabel");
|
|
FetchDataイベントを使用して、レポートフィールドにデータを格納する
Visual Basic
| Visual Basicコード (FetchDataイベント内に貼り付けます) |
コードのコピー
|
|---|---|
Try
reader.Read()
Me.Fields("CategoryID").Value = reader("categories.CategoryID")
Me.Fields("CategoryName").Value = reader("CategoryName")
Me.Fields("ProductName").Value = reader("ProductName")
Me.Fields("UnitsInStock").Value = reader("UnitsInStock")
Me.Fields("Description").Value = reader("Description")
Me.Fields("TotalLabel").Value = reader("CategoryName") + "の合計:"
eArgs.EOF = False
Catch
eArgs.EOF = True
End Try
|
|
C#
| C#コード (FetchDataイベント内に貼り付けます) |
コードのコピー
|
|---|---|
try
{
reader.Read();
Fields["CategoryID"].Value = reader["categories.CategoryID"].ToString();
Fields["CategoryName"].Value = reader["CategoryName"].ToString();
Fields["ProductName"].Value = reader["ProductName"].ToString();
Fields["UnitsInStock"].Value = reader["UnitsInStock"].ToString();
Fields["Description"].Value = reader["Description"].ToString();
Fields["TotalLabel"].Value = reader["CategoryName"].ToString() + "の合計:";
eArgs.EOF = false;
}
catch
{
eArgs.EOF = true;
}
|
|
データソースの接続を閉じるためのコードを追加する
Visual Basic
| Visual Basicコード (ReportEndイベント内に貼り付けます) |
コードのコピー
|
|---|---|
reader.Close() connection.Close() |
|
C#
| C#コード (ReportEndイベント内に貼り付けます) |
コードのコピー
|
|---|---|
reader.Close(); connection.Close(); |
|
レポートを表示する
または