このチュートリアルでは、サブレポートを使用したページ/RDLレポートの作成方法を示します。このトピックでは、以下のタスクを行います。
- サブレポート用のレポートを作成する
- サブレポートをデータソースに接続する
- パラメータを含むデータセットをサブレポートに追加する
- レポートパラメータをサブレポートに追加する
- データを表示するコントロールをサブレポートに追加する
- メインレポートを作成する
- メインレポートをデータソースに接続する
- データセットをメインレポートに追加する
- データを表示するコントロールをメインレポートに追加する
- レポートを表示する
メモ: このトピックでは、Reelsデータベースに含まれるEmployee、Sale、SaleDetailsの各テーブルを使用します。Reelsデータベース(..\ActiveReportsNET18\Samples\Data\Reels.mdb)へのアクセス権限が必要です。
チュートリアルを完了すると、次のようなレポートが作成されます。
デザイン時のレイアウト
実行時のレイアウト
サブレポート用のレポートを追加するには
- 新しいVisual Studioプロジェクトを作成します。
- [プロジェクト]メニューから[新しい項目の追加]を選択します。
- [新しい項目の追加]ダイアログが表示されたら、[ActiveReports 18.0J RDLレポート]を選択し、[名前]フィールドでファイル名をSales.rdlxに変更します。
- [追加]ボタンをクリックします。各種レポートレイアウトの追加の詳細については、「クイックスタート」を参照してください。
サブレポートをデータソースに接続するには
- [レポートエクスプローラ]で、[データソース]ノードを右クリックして[データソースの追加]オプションを選択するか、[追加](+)ボタンから[データソース]を選択します。
- [レポートデータソース]ダイアログで[全般]ページを選択し、[名前]フィールドに「Reels」と入力します。
- このページで、Reelsデータベースへの接続を作成します。データソースへの接続の詳細については、「データソースとの接続」を参照してください。
レポートパラメータをサブレポートに追加するには
- [レポートエクスプローラ]で[パラメータ]ノードを右クリックして[パラメータの追加]オプションを選択するか、[追加](+)ボタンから[パラメータ]を選択します。
- [名前]に「EmployeeID」と入力します。
- [データ型]で[Integer]を選択します。
- [OK]をクリックしてダイアログを閉じます。
パラメータを含むデータセットをサブレポートに追加するには
データベースクエリにパラメータを使用する場合、データセットの[パラメータ]ページにパラメータを追加して、そのパラメータの値がレポートパラメータコレクションからクエリに確実に渡されるようにする必要があります。
- [レポートエクスプローラ]で[データソース]ノードを右クリックして[データセットの追加]オプションを選択するか、[追加](+)ボタンから[データセット]を選択します。
- [データセット]ダイアログで[全般]ページを選択し、データセットの名前として「EmployeeSales」と入力します。この名前が、[レポートエクスプローラ]で追加したデータソースの子ノードとして表示されます。
- [パラメータ]ページで、[名前]に「EmployeeID」と入力します。
- [値]に「=Parameters!EmployeeID.Value」と入力します。
- このダイアログの [クエリ] ページで、 [クエリ] フィールドに以下のSQLクエリを入力します。
SQLクエリ |
コードのコピー
|
SELECT * FROM EmployeeSales
|
- [クエリ]ボックスの右上にある[データセットの検証]アイコンをクリックして、クエリを確認します。
- [OK]をクリックしてダイアログを閉じます。追加したデータセットとクエリによって取得されたフィールドが[レポートエクスプローラ]にノードとして表示されます。
データを表示するコントロールをサブレポートに追加するには
- ツールボックスからTableデータ領域をドラッグしてレポートのボディにドロップし、[プロパティ]ウィンドウに移動してDataSetNameプロパティを「EmployeeSales」に設定します。
- Table内をクリックします。Tableの上辺と左辺に列ハンドルと行ハンドルが表示されます。
- 一番右の列の上部にあるハンドルを右クリックして[右に列を挿入]を選択し、列を追加します。
- 各列の上部にある列ハンドルを順番にクリックし、[プロパティ]ウィンドウで Widthプロパティを次の表のように設定します。
列 |
Width |
1列目 |
1.5in |
2列目 |
1.5in |
3列目 |
1.2in |
4列目 |
1.55in |
ヒント: 新しい列を追加する前に既存の列のサイズを変更します。これによって、テーブルが水平方向に伸長してレポートの幅が用紙に収まらなくなることを避けることができます。
- テーブルの詳細行の左にあるハンドルを右クリックして[グループの挿入...]を選択し、[Table - グループ]ダイアログを開きます。
- [式]で[=Fields!EmployeeID.Value]を選択します。これにより、各従業員のすべての詳細行がグループ化されます。
-
[名前] を「Employee」に変更し、[OK]をクリックしてダイアログを閉じます。グループ行がテーブルに追加されます。
メモ: 式を設定するまでテーブルグループの名前は変更できません。
- テーブルの詳細行の左にあるハンドルを右クリックして[グループの編集]を選択し、[Table - 詳細行のグループ化]ダイアログを開きます。
- [全般]タブの[式]で[=Fields!SaleID.Value]を選択し、[OK]をクリックしてダイアログを閉じます。これによって、各SaleIDで販売された品目ごとの売上額ではなく、各SaleIDの合計売上額が一覧表示されます。
- グループヘッダ行の左にあるハンドルを右クリックして[下に行を挿入]を選択します。この新しい行は、新しいグループごとに上部に繰り返し表示される静的ラベルに使用します。
- テーブルの左にあるいずれかのハンドルを右クリックして[テーブルのヘッダ]を選択し、テーブルのヘッダを非表示に切り替えます。
- テーブルの左にあるいずれかのハンドルを右クリックして[テーブルのフッタ]を選択し、テーブルのフッタを非表示に切り替えます。
- [レポートエクスプローラ]で[本文]ノードを選択して[プロパティ]ウィンドウに移動し、Sizeプロパティを「5.75in×1in」に設定します。これで、サブレポートがメインレポート上のサブレポートコントロール内に収まります。
Tableデータ領域にデータフィールドを追加するには
- [レポートエクスプローラ]で、EmployeeSalesデータセットから以下のフィールドをドラッグしてテーブルの1行目のグループヘッダ行にドロップします。
データフィールド |
列名 |
プロパティ名 |
Name |
TableColumn1 |
FontWeight: Bold |
- [Shift]キーを押したままマウスで1行目のグループヘッダ行の最初の2つのセルを選択し、右クリックして[セルの結合]を選択します。これにより、従業員名がテーブルの2つの列にまたがって表示されます。
- 1行目のグループヘッダ行の左にあるハンドルを使用して行を選択し、 BackgroundColor プロパティを LightSteelBlueに設定します。
ヒント: 最終的にレポートに色をつけない場合でも、レポートの作成中は色をつけた方が便利な場合があります。色をつけると、レポートをプレビューしたときに各コントロールを識別しやすくなり、トラブルシューティングに役立ちます。
- テーブルの2行目のグループヘッダ行のセルに以下のテキストを入力します。
データフィールド |
列名 |
プロパティ名 |
売上日 |
TableColumn1 |
FontWeight: Bold
TextAlign: Right |
売上ID |
TableColumn2 |
FontWeight: Bold
TextAlign: Right |
数量 |
TableColumn3 |
FontWeight: Bold
TextAlign: Right |
合計 |
TableColumn4 |
FontWeight: Bold
TextAlign: Right |
- 2行目のグループヘッダ行の左にあるハンドルを使用して行を選択し、BackgroundColorプロパティを「LightGray」に設定します。
- [レポートエクスプローラ]で、EmployeeSalesデータセットから以下のフィールドをドラッグしてテーブルの詳細行にドロップします。
データフィールド |
列名 |
プロパティ名 |
SaleDate |
TableColumn1 |
Format: Short date |
SaleID |
TableColumn2 |
|
Quantity |
TableColumn3 |
|
Total |
TableColumn4 |
Format: Currency |
- テーブルの詳細行で、Quantityデータフィールドのテキストボックスを選択して[プロパティ]ウィンドウに移動し、Valueプロパティを「=Sum(Fields!Quantity.Value)」に変更します。これにより、フィールドの式にSum集計関数が追加され、各SalesIDのQuantityフィールドの集計値が表示されます。
- テーブルの詳細行で、Totalデータフィールドのテキストボックスを選択して[プロパティ]ウィンドウに移動し、Valueプロパティを=Sum(Fields!Total.Value)に変更します。これにより、フィールドの式にSum集計関数が追加され、各SalesIDのTotalフィールドの集計値が表示されます。
- [レポートエクスプローラ]で、EmployeeSalesデータセットから以下のフィールドをドラッグしてテーブルのグループフッタ行にドロップします。
データフィールド |
列名 |
プロパティ名 |
Quantity |
TableColumn3 |
Value: =Sum(Fields!Quantity.Value) |
Total |
TableColumn4 |
Format: Currency
Value: =Sum(Fields!Total.Value) |
- テーブルのグループフッタ行の指定されたセルに以下のテキストを入力します。
テキスト |
列名 |
プロパティ名 |
従業員合計: |
TableColumn2 |
FontWeight: Bold
TextAlign: Right |
- グループフッタ行の左にあるハンドルを使用して行を選択し、BackgroundColorプロパティを「LightGray」に設定します。
- [プレビュー]タブに移動し、Employee IDに「1035」と入力して、[レポートを表示]ボタンをクリックします。デザイン時および実行時のレイアウトは以下のようになります。
- [ファイル]メニューから[保存]を選択して、このファイルを保存します。このレポートは、メインレポートでサブレポートとして使用します。
メインレポートを作成するには
- Visual Studioの[プロジェクト]メニューから[新しい項目の追加]を選択します。
- [新しい項目の追加]ダイアログが表示されたら、[ActiveReports 18.0J RDLレポート]を選択し、[名前]フィールドでファイル名を「Employees.rdlx」に変更します。
- [追加]ボタンをクリックします。
- [レポートエクスプローラ]で[本文]ノードを選択し、[プロパティ]ウィンドウに移動し、Sizeプロパティを「6.5in, 3.6in」に設定します。
メインレポートをデータソースに接続するには
- [レポートエクスプローラ]で[データソース]ノードを右クリックして[データソースの追加]オプションを選択するか、[追加](+)ボタンから[データソース]を選択します。
- [レポートデータソース]ダイアログで[全般]ページを選択し、[名前]フィールドに「Reels」と入力します。
- このページで、Reelsデータベースへの接続を作成します。データソースへの接続の詳細については、「データソースとの接続」を参照してください。
データセットをメインレポートに追加するには
- [レポートエクスプローラ]で[データソース]ノードを右クリックして[データセットの追加]オプションを選択するか、[追加](+)ボタンから[データセット]を選択します。
- [データセット]ダイアログで[全般]ページを選択し、データセットの名前として「EmployeeInfo」と入力します。この名前が、[レポートエクスプローラ]で追加したデータソースの子ノードとして表示されます。
- このダイアログの[クエリ]ページで、[クエリ]フィールドに以下のSQLクエリを入力します。
SQLクエリ |
コードのコピー
|
SELECT * FROM EmployeeInfo
|
- [データセットの検証]アイコンをクリックしてクエリを確認し、フィールドリストにフィールドを読み込みます。
- [OK]をクリックしてダイアログを閉じます。追加したデータセットとクエリによって取得されたフィールドが[レポートエクスプローラ]にノードとして表示されます。
データを表示するコントロールをメインレポートに追加するには
以下の手順では、コントロールを追加してメインレポートを作成する方法を示します。
メインレポートの上部に静的ラベルを追加するには
Visual StudioのツールボックスからTextBoxコントロールをドラッグしてレポートの本文にドロップし、以下のプロパティを設定します。
プロパティ名 |
プロパティの値 |
Font |
Normal, メイリオ, 14pt, Bold |
Location |
0in, 0in |
Size |
6.5in, 0.3in |
TextAlign |
Center |
Value |
都市/店舗別 従業員レポート |
都市ごとにデータを繰り返すListデータ領域を追加するには
- ツールボックスからListデータ領域をドラッグしてレポートの本文にドロップします。ドロップしたデータ領域を選択し、[プロパティ]ウィンドウに移動して以下のプロパティを設定します。
プロパティ名 |
プロパティの値 |
BackgroundColor |
Silver |
DataSetName |
EmployeeInfo |
Location |
0in, 0.375in
|
Size |
6.25in, 2.7in |
- [プロパティ]ウィンドウの下部で、[プロパティ設定ダイアログ]コマンドを選択します。コマンドへのアクセス方法の詳細については、「[プロパティ]ウィンドウ」を参照してください。
- Listダイアログが表示されたら、[詳細行のグループ化]を選択します。
- [式]で[=Fields!City.Value]を選択します。
- [OK]をクリックしてダイアログを閉じます。
- [レポートエクスプローラ]から City フィールドをドラッグしてListデータ領域にドロップし、以下のプロパティを設定します。
プロパティ名 |
プロパティの値 |
FontSize |
12pt |
Location |
0in, 0in |
Size |
6.5in, 0.25in |
TextAlign |
Center |
都市の店舗ごとにデータを繰り返す2つ目のListデータ領域を入れ子にするには
- ツールボックスからListデータ領域をドラッグして1つ目のListデータ領域内にドロップします。ドロップしたデータ領域を選択し、[プロパティ]ウィンドウに移動して以下のプロパティを設定します。
プロパティ名 |
プロパティの値 |
BackgroundColor |
Beige |
DataSetName |
EmployeeInfo |
Location |
0.125in, 0.3in |
Size |
6.25in, 2.5in |
- [プロパティ]ウィンドウの下部で、[プロパティ設定ダイアログ]コマンドを選択します。コマンドへのアクセス方法の詳細については、「[プロパティ]ウィンドウ」を参照してください。
- Listダイアログが表示されたら、[詳細行のグループ化]を選択します。
- [式]で「=Fields!StoreName.Value」を選択します。
- [OK]をクリックしてダイアログを閉じます。
- [レポートエクスプローラ]からStoreNameフィールドをドラッグしてリストにドロップし、以下のプロパティを設定します。
プロパティ名 |
プロパティの値 |
FontWeight |
Bold |
Location |
0in, 0in |
Size |
2in, 0.25in |
店舗の従業員ごとにデータを繰り返す3つ目のListデータ領域を入れ子にするには
- ツールボックスからListデータ領域をドラッグして2つ目のListデータ領域内にドロップします。ドロップしたデータ領域を選択し、[プロパティ]ウィンドウに移動して以下のプロパティを設定します。
プロパティ名 |
プロパティの値 |
BackgroundColor |
White |
DataSetName |
EmployeeInfo |
Location |
0in, 0.25in |
Size |
6.125in, 1.875in |
- [プロパティ]ウィンドウの下部で、[プロパティ設定ダイアログ]コマンドを選択します。コマンドへのアクセス方法の詳細については、「[プロパティ]ウィンドウ」を参照してください。
- Listダイアログで、[詳細行のグループ化]を選択します。
- [式]で「=Fields!EmployeeID.Value」を選択します。
- [OK]をクリックしてダイアログを閉じます。
- [レポートエクスプローラ]から以下のフィールドをドラッグして3つ目のListデータ領域内にドロップし、以下のプロパティを設定します。
データフィールド |
プロパティ名 |
Name |
Location: 1.125in, 0in
Size: 2.625in, 0.25in |
Education |
Location: 1.125in, 0.25in
Size: 2.625in, 0.25in |
DateOfBirth |
Location: 5in, 0in
Size: 0.875in, 0.25in
Format: Short date |
PhoneNumber |
Location: 4.875in, 0.25in
Size: 1.4in, 0.25in |
- ツールボックスから5個のテキストボックスをドラッグして3つ目のListデータ領域内にドロップし、以下のプロパティを設定します。
TextBoxのNameプロパティ |
Valueプロパティ |
プロパティ名 |
tb_名前 |
名前: |
Location: 0.125in, 0in
Size: 0.625in, 0.25in
FontWeight: Bold |
tb_最終学歴 |
最終学歴: |
Location: 0.125in, 0.25in
Size: 0.875in, 0.25in
FontWeight: Bold |
tb_生年月日 |
生年月日: |
Location: 3.875in, 0in
Size: 1in, 0.25in
FontWeight: Bold |
tb_電話 |
電話: |
Location: 3.875in, 0.25in
Size: 1in, 0.25in
FontWeight: Bold |
tb_売上記録 |
売上記録 |
Location: 0.125in, 0.5in
Size: 1in, 0.25in
FontWeight: Bold |
SubReportコントロールをメインレポートに追加するには
- ツールボックスからSubReportコントロールをドラッグして3つ目のListデータ領域内にドロップします。ドロップしたコントロールを選択し、[プロパティ]ウィンドウに移動して以下のプロパティを設定します。
プロパティ名 |
プロパティの値 |
Location |
0.125in, 0.875in |
NoRows |
2005年の売上記録はありません。 |
ReportName |
Sales(このレポートがSalesレポートと同じディレクトリに保存されていることを確認してください)
メモ: このレポートを[プレビュー]タブで表示するには、サブレポートのフルパスを指定します。
|
Size |
5.875in, 0.875in |
Visibility: Hidden |
True(初期状態ではサブレポートが表示されないようにします) |
Visibility: ToggleItem |
前の手順で追加した[売上記録]テキストボックス(テキストの横にトグル画像([+])が配置され、それをクリックするとサブレポートが表示されます) |
- [プロパティ]ウィンドウの下部で、[プロパティ設定ダイアログ]コマンドを選択します。コマンドへのアクセス方法の詳細については、「[プロパティ]ウィンドウ」を参照してください。
- [SubReport]ダイアログの[パラメータ]ページで、[パラメータ名]を「EmployeeID」に設定します。この名前はサブレポートに設定したパラメータと正確に一致する必要があります。
-
[パラメータ値]を「=Fields!EmployeeID.Value」に設定します。
メモ: サブレポートに自動的にメインレポートと同じテーマを適用するオプションを使用できます。このオプションは、[SubReportプロパティ設定]ダイアログの[全般]ページにあります。
- [OK]をクリックしてダイアログを閉じます。
レポートを表示するには
- [プレビュー]タブをクリックすると、レポートが表示されます。
または
メモ: [売上記録]の左にある[+]をクリックすると、サブレポートが表示されます。