PowerTools ActiveReports for .NET 11.0J > ActiveReportsユーザーガイド > サンプルとチュートリアル > チュートリアル > セクションレポートのチュートリアル > レイアウト > アンバウンドレポートでのグループ化 |
ActiveReportsでは、アンバウンドレポート内でグループ化することができます。グループ化の設定は、テキストボックスのDataFieldプロパティを使用するのと同じ要領で、グループヘッダのDataFieldプロパティを使用して、データベースからグループ化するデータを取得します。
このトピックでは、以下のタスクを行います。
メモ: このチュートリアルは、Northwindデータベース(NWind.mdb)のテーブルを使用しています。使用にはNorthwindデータベース(..ActiveReportsNET11\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\ActiveReportsNET11\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\ActiveReportsNET11\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(); |
レポートを表示する
または