データセット フィールド コレクションの参照 (レポート ビルダーおよび SSRS)

レポート内の各データセットには、1 つのフィールド コレクションが含まれます。 フィールド コレクションは、データセット クエリによって指定されるフィールドと、ユーザーが作成する追加の計算フィールドのセットです。 データセットを作成すると、フィールド コレクションが [レポート データ] ペインに表示されます。

式内の単純なフィールド参照は、デザイン画面に単純な式として表示されます。 たとえば、フィールド Sales をレポート データ ペインからデザイン画面のテーブル セルにドラッグすると、 [Sales] が表示されます。 この式は、テキスト ボックスの Value プロパティに対して設定されている基本となる式 =Fields!Sales.Value を表しています。 レポートが実行されると、レポート プロセッサによってこの式が評価され、テーブル セルのテキスト ボックスにデータ ソースの実際のデータが表示されます。 詳細については、「式 (レポート ビルダーおよび SSRS)」および「データセット フィールド コレクション (レポート ビルダーおよび SSRS)」を参照してください。

Note

レポート定義 (.rdl) は、レポート ビルダーおよび SQL Server Data Tools のレポート デザイナーで作成および変更できます。 これらの作成環境では、レポートおよび関連アイテムの作成方法、開く方法、および保存方法が異なります。 詳細については、「microsoft.com の Web レポート デザイナー および レポート ビルダー (SSRS)でのレポートのデザイン」を参照してください。

データセットのフィールド コレクションの表示

フィールド コレクションの個々の値を表示するには、各フィールドをテーブル詳細行にドラッグして、レポートを実行します。 フィールド参照がテーブル データ領域または一覧データ領域の詳細行に含まれている場合は、データセットの行ごとの値が表示されます。

フィールドの集約値を表示するには、各数値フィールドをマトリックスのデータ領域にドラッグします。 行の総数を計算する既定の集計関数は、 =Sum(Fields!Sales.Value)などの Sum 関数です。 既定の関数を変更して、別の合計を計算することもできます。 詳細については、「集計関数リファレンス (レポート ビルダーおよび SSRS)」を参照してください。

テキスト ボックス内のフィールド コレクションに関する集約値を (データ領域の一部ではなく) デザイン画面に直接表示するには、集計関数のスコープとしてデータセット名を指定する必要があります。 たとえば、 SalesDataという名前のデータセットの場合は、 Salesという式によってフィールド =Sum(Fields!Sales,"SalesData")のすべての値の合計が指定されます。

[式] ダイアログ ボックスを使用して単純なフィールド参照を定義する場合は、カテゴリ ペインでフィールド コレクションを選択して、使用可能なフィールドの一覧を フィールド ペインに表示できます。 各フィールドには、Value や IsMissing などのいくつかのプロパティがあります。 残りのプロパティは、データ ソースの種類によってはデータセットで使用できる場合がある、定義済みの拡張フィールド プロパティです。

値が NULL であるデータセット フィールドの検出

null (Visual Basic では Nothing ) のフィールド値を検出するには、関数 IsNothingを使用できます。 次の式をテーブル詳細行のテキスト ボックスに配置すると、フィールド MiddleName がテストされ、値が NULL の場合は "No Middle Name" という文字列、値が NULL 以外の場合はフィールド値そのもので置き換えられます。

=IIF(IsNothing(Fields!MiddleName.Value),"No Middle Name",Fields!MiddleName.Value)

実行時の動的クエリにおける存在しないフィールドの検出

既定では、Fields コレクションのアイテムには 2 つのプロパティがあります。Value と IsMissing です。 IsMissing プロパティは、デザイン時にデータセットに対して定義されているフィールドが、実行時に取得されたフィールドに存在するかどうかを示します。 たとえば、クエリでは、結果セットが入力パラメーターによって異なるストアド プロシージャを呼び出したり、テーブル定義が変更された>クエリをSELECT * FROM <テーブルとして使用したりできます。

Note

IsMissing は、任意の種類のデータ ソースに関して、デザイン時と実行時の間にデータセット スキーマに加えられた変更を検出します。 IsMissing を使用して多次元キューブ内の空のメンバーを検出することはできません。また、 EMPTYNON EMPTYの MDX クエリ言語の概念とは関係ありません。

IsMissing プロパティをカスタム コードでテストすると、結果セットにフィールドが含まれているかどうかを判断できます。 IIFSWITCHなどの Visual Basic 関数呼び出しで式を使用して、その存在をテストすることはできません。これは、Visual Basic が関数の呼び出し内のすべてのパラメーターを評価するためです。この結果、不足している関数への参照が評価されるとエラーが発生します。

存在しないフィールド用の動的列の表示を制御する例

データセット内のフィールドを表示する列の表示を制御するための式を設定するには、まず、フィールドの有無に基づいてブール値を返すカスタム コード関数を定義しておく必要があります。 たとえば、次のカスタム コード関数では、フィールドが存在しない場合に true、フィールドが存在する場合に false が返されます。

Public Function IsFieldMissing(field as Field) as Boolean  
 If (field.IsMissing) Then  
 Return True  
  Else   
  Return False  
 End If  
End Function  

この関数を使用して列の表示を制御するには、列の Hidden プロパティを次の式に設定します。

=Code.IsFieldMissing(Fields!FieldName)

フィールドが存在しない場合、列は非表示になります。

存在しないフィールドのテキスト ボックス値を制御する例

存在しないフィールドの値を指定文字列で置き換えるには、カスタム コードを作成して、フィールドが存在しない場合にそのフィールド値の代わりに使用できる文字列が返されるようにする必要があります。 たとえば、次のカスタム コード関数を実行すると、フィールドが存在する場合はフィールドの値が返され、フィールドが存在しない場合は 2 番目のパラメーターとして指定したメッセージが返されます。

Public Function IsFieldMissingThenString(field as Field, strMessage as String) as String  
 If (field.IsMissing) Then  
  Return strMessage  
 Else   
  Return field.Value  
  End If  
End Function  

この関数をテキスト ボックスで使用するには、次の式を Value プロパティに追加します。

=Code.IsFieldMissingThenString(Fields!FieldName,"Missing")

テキスト ボックスには、フィールド値または指定した文字列が表示されます。

拡張フィールド プロパティの使用

拡張フィールド プロパティは、データ処理拡張機能によってフィールドに定義された追加プロパティであり、データセットのデータ ソースの種類に基づいて決定されます。 拡張フィールド プロパティには、定義済みのものと、データ ソースの種類に固有のものがあります。 詳細については、「Analysis Services データベースに対する拡張フィールド プロパティ (SSRS)」を参照してください。

そのフィールドでサポートされていないプロパティを指定すると、式は null (Visual Basic ではNothing ) と評価されます。 データ プロバイダーが拡張フィールド プロパティをサポートしていない場合、またはクエリの実行時にフィールドが見つからない場合、プロパティの値は、String型とObject型のプロパティにnull (Visual Basic ではNothing)、Integer型のプロパティの場合はゼロ (0) になります。 データ処理拡張機能は、この構文を含むクエリを最適化することにより、定義済みのプロパティを利用する場合があります。

参照

式の例 (レポート ビルダーおよび SSRS)
レポートへのデータの追加 (レポート ビルダーおよび SSRS)