異なる種類のデータセットからさまざまなデータを取得して、ひとつのデータ領域に表示する必要のあるケースは多く存在します。ActiveReportsでは、データ領域にLookup関数を使用することで、この表示が可能になります。
Lookup関数は、異なるデータセット内にある、同じデータタイプで、関連付けられたフィールドまたは共通のフィールドから、条件に一致する値を返します。この関数は、データ領域を構成するテキストボックスのValueプロパテイの式として設定します。ActiveReportsのLookup関数は、Microsoft ExcelのVLOOKUP関数と同等の関数です。
Lookup関数
構文
=Lookup(<SourceExpression>, <DestinationExpression>, <ResultExpression>, <LookupDataset>)
パラメータ
- SourceExpression: データ領域に関連付けられたデータセットの値を評価します。この式がフィールド名である場合は、データ領域に関連付けられたデータセットのフィールドの値が使用されます。
- DestinationExpression: LookupDatasetに関連付けられたデータセットの値を評価する式です。この式がフィールド名である場合は、LookupDatasetのフィールドの値が使用されます。
- ResultExpression: Lookup関数によってLookupDatasetから返された値を評価する式です。
- LookupDataset: データ領域のデータセットから取得した値を使用して関連する属性を表示するデータセットです。
留意点
- SourceExpressionとDestinationExpressionのデータタイプは同じである必要があります。
- Lookup関数をデータ領域の値の式として使用する場合、式はデータ領域のデータセットの行ごと、または繰り返されるデータごとに評価されます。
- Lookup関数は、Lookupデータセットに行が存在する場合はひとつの値を返します。存在しない場合はnull値を返します。
- Lookup関数の式は集計式の機能も果たすことができます。ユーザーはテーブルのグループヘッダ/グループフッタでLookup関数を使用して、テーブルの値の総合計を計算することができます。
制限事項
- SourceExpressionとDestinationExpressionの間では、比較演算子「=」のみが使用可能です。
- Lookup関数では、使用可能なレベルはひとつです。入れ子式のLookup関数はサポートされていません。
このトピックでは、以下のタスクを行います。
- Visual StudioプロジェクトにActiveReportを追加する
- レポートをデータソースに接続する
- データセットを追加する
- レポートにコントロールを追加する
- レポートを表示する
|
メモ:
- このチュートリアルでは、SalesResultデータベース(..\ActiveReportsNET11\Data\SalesResult.mdb)を使用しています。
- このチュートリアルではページレポートを使用していますが、RDLレポートを使用した場合も同様の手順で作成することが可能です。
|
チュートリアルを完了すると、次のようなレポートが作成されます。
デザイン時のレイアウト
実行時のレイアウト
Visual StudioプロジェクトにActiveReportを追加する
- Visual Studioで新規プロジェクトを開きます([ファイル]メニューから[新規作成]、[プロジェクト]を選択)。
- [新しいプロジェクト]ダイアログで[ActiveReports 11.0J ページレポート]を選択し、ファイル名を「SalesResultReport」に変更します。
- [OK]ボタンをクリックすると、ActiveReports 11 ページレポートアプリケーションが新規作成されます。デフォルトでページレポートがプロジェクトに追加されています。
レポートレイアウトの追加については、「プロジェクトにレポートを追加する」を参照してください。
レポートをデータソースに接続する
- [レポートエクスプローラ]で、[データソース]ノードを右クリックして、[データソースの追加]オプションを選択するか、[追加](+)ボタンから[データソース]を選択します。
- 表示される[レポートデータソース]ダイアログで、[全般]ページを選択し、[名前]フィールドで名前を「SalesResultData」に変更します。
- 同じ[全般]ページで、SalesResultデータベースに接続します。接続の詳細については、「データソースとの接続」を参照してください。
データセットを追加する
Dataset1を追加する
- [レポートエクスプローラ]で、[SalesResultData]ノードを右クリックして、[データセットの追加]オプションを選択するか、[追加](+)ボタンから[データセット]を選択します。
- 表示される[データセット]ダイアログで、[全般]ページを選択します。[名前]フィールドの名前はデフォルトの「Dataset1」にします。この名前は[レポートエクスプローラ]に[データソース]の子ノードとして表示されます。
- [クエリ]ページで、クエリフィールドに次のSQLクエリを追加します。
SQLクエリ |
コードのコピー
|
SELECT M01Product.Category, M01Product.ProductID
FROM M01Product
|
- クエリボックスの横にある[データセットの検証]アイコンをクリックして、クエリを検証します。
-
[OK]をクリックしてダイアログを閉じます。データセットとクエリフィールドが、[レポートエクスプローラ]に子ノードとして表示されます。
Dataset1は次のフィールドを含んでいます。
Dataset2を追加する
- 上記「Dataset1を追加する」の手順1、手順2を行います。[名前]フィールドの名前はデフォルトの「Dataset2」にします。
-
[データセット]ダイアログの[クエリ]ページで、クエリフィールドに次のSQLクエリを追加します。
SQLクエリ |
コードのコピー
|
SELECT * FROM T01Result
|
- クエリボックスの横にある[データセットの検証]アイコンをクリックして、クエリを検証します。
-
[OK]をクリックしてダイアログを閉じます。データセットとクエリフィールドが、[レポートエクスプローラ]に子ノードとして表示されます。
Dataset2は次のフィールドを含んでいます。
- ID
- ProductID
- Quantity
- PDate
- FY
レポートにコントロールを追加する
- ツールボックスからTableデータ領域をドラッグし、レポートのデザイナ面上にドロップします。
-
[プロパティ]ウィンドウへ移動し、Tableデータ領域の各プロパティを次のように設定します。
プロパティ名 |
プロパティの値 |
FixedSize |
4in, 4in |
Location |
0in, 0in |
Size |
3.875in, 0.75in |
DataSetName |
Dataset1 |
- テーブルの詳細行の各テキストボックス上でポインタをホバーさせて、フィールド選択用アイコンを表示し、各セルに次のフィールドを設定します。
セル |
フィールド |
TextBox4 |
Category |
TextBox5 |
ProductID |
この設定により、詳細行には式が表示されると同時に、列のヘッダ行には静的なラベルが自動的に表示されます。
- Tableデータ領域のTextBox6を選択して[プロパティ]ウィンドウへ移動し、各プロパティを次のように設定します。
プロパティ名 |
プロパティの値 |
Value |
=Lookup(Fields!ProductID.Value, Fields!ProductID.Value, Fields!Quantity.Value, "DataSet2") |
TextAlign |
Left |
Valueプロパティの式は、関連するDataset1のProductIDフィールドに対応して、Dataset2のQauantityフィールドの値を返します。
- 下記の各テキストボックスを選択して[プロパティ]ウィンドウへ移動し、Valueプロパティを次のように設定します。
セル |
プロパティの値 |
TextBox1 |
カテゴリ |
TextBox2 |
製品ID |
TextBox3 |
数量 |
- Tableデータ領域のいずれかのテキストボックスを選択してテーブルの左側に行ハンドルを表示し、ヘッダ行を選択します。[プロパティ]ウィンドウへ移動して、FontWeightプロパティを「Bold」に設定します。
レポートを表示する
- デザイン時にレポートを表示するには、[プレビュー]タブをクリックします。
または
関連トピック