セクションレポートでは、Subreportコントロールを使用し、複数の子レポートを含むことができます。子レポート(サブレポート)は、親セクション(Subreportコントロールが配置されたセクション)が出力されるたびに実行されます。このチュートリアルでは、親レポートのデータからサブレポートのレコードソースを変更して、現在の情報を取得する方法について説明します。
このトピックでは、以下のタスクを行います。
チュートリアルを完了すると、次のレポートが作成されます。
Visual Studioプロジェクトに親レポートとサブレポートを追加する
詳細は、「クイックスタート」参照してください。
親レポートをデータソースに接続する
| SQLクエリ |
コードのコピー
|
|---|---|
| SELECT * FROM Categories | |
親レポート(rptMain)のレイアウトを作成する
| プロパティ名 | プロパティの値 |
|---|---|
| Name | lblProductsbyCategory |
| Text | カテゴリ別の製品 |
| Location | 0, 0 in |
| Size | 5.75, 0.25 in |
| Font Size | 14 |
| Alignment | Center |
TextBox1
| プロパティ名 | プロパティの値 |
|---|---|
| Name | txtCategoryID1 |
| DataField | CategoryID |
| Visible | False |
TextBox2
| プロパティ名 | プロパティの値 |
|---|---|
| Name | txtCategoryName1 |
| DataField | CategoryName |
| Location | 1.15, 0.05 in |
Label1
| プロパティ名 | プロパティの値 |
|---|---|
| Name | lblCategoryName |
| Text | カテゴリ名: |
| Location | 0, 0.05 in |
| Size | 0.75, 0.2 in |
| Font Bold | True |
Label2
| プロパティ名 | プロパティの値 |
|---|---|
| Name | lblProducts |
| Text | 製品: |
| Location | 2.4, 0.05 in |
| Font Bold | True |
Subreport
| プロパティ名 | プロパティの値 |
|---|---|
| Name | SubReport1 |
| Location | 3, 0.05 in |
| Size | 2.25, 1 in |
子レポートの(rptSub)レイアウトを作成する
| プロパティ名 | プロパティの値 |
|---|---|
| CanShrink | True |
| BackColor | AliceBlue |
| プロパティ名 | プロパティの値 |
|---|---|
| DataField | ProductName |
| Name | txtProductName |
| Text | 製品名 |
| Location | 0, 0 in |
| Size | 2.25, 0.2 in |
サブレポートのインスタンスを作成するコードを追加する
Visual Basic
| Visual Basicコード(ReportStartイベントの上に貼り付けます) |
コードのコピー
|
|---|---|
Private rpt As rptSub Private childDataSource As New GrapeCity.ActiveReports.Data.OleDBDataSource() |
|
| Visual Basicコード(ReportStartイベント内に貼り付けます) |
コードのコピー
|
|---|---|
rpt = New rptSub() |
|
C#
サンプルコードを示します。
| C#コード(ReportStartイベントの上に貼り付けます) |
コードのコピー
|
|---|---|
private rptSub rpt; private GrapeCity.ActiveReports.Data.OleDBDataSource childDataSource = new GrapeCity.ActiveReports.Data.OleDBDataSource(); |
|
| C#コード(ReportStartイベント内に貼り付けます) |
コードのコピー
|
|---|---|
rpt = new rptSub(); |
|
子レポートにデータソースを割り当てるコードを追加する
Visual Basic
| Visual Basicコード(Formatイベント内に貼り付けます) |
コードのコピー
|
|---|---|
childDataSource.ConnectionString = CType(Me.DataSource, GrapeCity.ActiveReports.Data.OleDBDataSource).ConnectionString childDataSource.SQL = "SELECT * FROM Products WHERE CategoryID = " + Me.txtCategoryID1.Value.ToString rpt.DataSource = childDataSource SubReport1.Report = rpt |
|
C#
| C#コード(Formatイベント内に貼り付けます) |
コードのコピー
|
|---|---|
childDataSource.ConnectionString = ((GrapeCity.ActiveReports.Data.OleDBDataSource)this.DataSource).ConnectionString; childDataSource.SQL = "SELECT * FROM Products WHERE CategoryID = " + this.txtCategoryID1.Value.ToString(); rpt.DataSource = childDataSource; SubReport1.Report = rpt; |
|
レポートを表示する