レポートの一般的な式 (Visual Studio レポート デザイナ)

一部の式は、レポートでよく使用されます。これらの式には、レポートのデータの外観を変更する式、合計を計算する式、レポート アイテムのプロパティを変更する式などがあります。このトピックでは、レポート内部の一般的なタスクに使用できる式をいくつか説明します。

レポート内の多くの式には、関数が含まれています。関数を使用する式を Microsoft.VisualBasicSystem.Convert、および System.Math 名前空間から作成することも、他のアセンブリやカスタム コードへの参照を追加することもできます。Microsoft .NET Framework SDK のクラスを使用することもできます。詳細については、.NET Framework SDK クラス ライブラリのドキュメントを参照してください。

関数

レポート内の多くの関数は、Microsoft Visual Basic 関数または組み込みレポート関数のいずれかです。これらの関数を使用して、データの書式を設定し、ロジックを適用し、レポートのメタデータにアクセスできます。

Visual Basic の関数

Visual Basic の関数を使用して、テキスト ボックスに表示されるデータや、レポートのパラメータ、プロパティ、その他の領域に使用されるデータを操作できます。このセクションでは、このような関数の例について説明します。Visual Basic 関数の詳細については、Visual Basic のマニュアルを参照してください。

日付関数

Visual Basic の関数を使用して、レポートの日付情報を提供できます。

  • 次の式には、現在の日付を返す Today 関数が含まれています。この式は、レポートに日付を表示するテキスト ボックス、または現在の日付に基づいてデータをフィルタ処理するパラメータに使用できます。

    =Today() 
    
  • DateAdd 関数は、1 つのパラメータに基づいて日付の範囲を指定する場合に役立ちます。次の式では、StartDate という名前のパラメータで指定した日付の 6 か月後の日付が返されます。

    =DateAdd(DateInterval.Month, 6, Parameters!StartDate.Value)
    
  • 次の式には、特定の日付の年を表示する Year 関数が含まれています。この関数を使用すると、日付をグループ化したり、一連の日付のラベルとして年を表示することができます。次の式では、指定した注文日グループの年が返されます。

    =Year(Fields!OrderDate.Value)
    
  • また、Month 関数および他の関数を使用して、日付を操作することもできます。詳細については、Visual Basic のマニュアルを参照してください。

文字列関数

Visual Basic の関数を使用して、レポートの文字列を操作できます。

  • Format 関数を使用して、文字列内の日付と数値の書式を設定できます。次の式では、StartDate および EndDate パラメータの値が長い日付形式で表示されます。

    =Format(Parameters!StartDate.Value, "D") & " through " &  
    Format(Parameters!EndDate.Value, "D") 
    

    日付または数値のみが含まれているテキスト ボックスに書式を適用する場合、テキスト ボックスで Format 関数を使用するのではなく、テキスト ボックスの Format プロパティを使用する必要があります。

  • RightLen、および InStr 関数は、部分文字列を返す場合に役立ちます。たとえば、ドメイン\ユーザー名 の文字列からユーザー名だけを返します。次の式では、User というパラメータから円記号 (\\) の右側にある文字列の部分が返されます。

    =Right(Parameters!User.Value, Len(Parameters!User.Value) - 
    InStr(Parameters!User.Value, "\"))
    

    次の式は、Visual Basic の関数の代わりに .NET Framework の String クラスのメンバを使用しています。返される値は、上記の値と同じです。

    =Parameters!User.Value.Substring(Parameters!User.Value.IndexOf("\")+1, 
    Parameters!User.Value.Length-Parameters!User.Value.IndexOf("\")-1)
    

決定関数

Visual Basic の関数を使用して、入力値を評価し、その結果に応じて別の値を返すことができます。

  • Iif 関数では、評価された式が True であるかどうかに応じて、2 つの値のいずれかが返されます。次の式では、Iif 関数を使用して、LineTotal の値が 100 を超える場合にブール値 True が返されます。それ以外の場合は False が返されます。

    =Iif(Fields!LineTotal.Value > 100, True, False)
    

    次の式では、複数の Iif 関数 ("ネストされた Iif" とも呼ばれます) を使用して、PctComplete の値に応じて 3 つの値のいずれかが返されます。

    =Iif(Fields!PctComplete.Value >= .8, "Green", 
    Iif(Fields!PctComplete.Value >= .5, "Amber", "Red"))
    
  • また、次の式でも PctComplete の値に基づいて 3 つの値のいずれかが返されますが、代わりに Switch 関数が使用されています。この関数では、一連の式のうち、結果が True になる最初の式に関連付けられた値が返されます。

    =Switch(Fields!PctComplete.Value >= .8, "Green", 
    Fields!PctComplete.Value >= .5, "Amber", Fields!PctComplete.Value < 
    .5, "Red")
    

レポートの関数

Reporting Services では、レポート内のデータの操作に使用できるレポートの関数が追加されています。このセクションでは、このような関数のうち 2 つの例を紹介します。レポート関数と例の詳細については、「レポートの組み込み関数 (Visual Studio レポート デザイナ)」を参照してください。

  • Sum 関数を使用すると、グループまたはデータ領域の値を合計できます。この関数は、テーブル グループのヘッダーまたはフッターで役立ちます。次の式では、Order グループまたは Order データ領域のデータの合計が表示されます。

    =Sum(Fields!LineTotal.Value, "Order")
    
  • RowNumber 関数を含む式を、データ領域内のテキスト ボックスで使用すると、式が表示されるテキスト ボックスの各インスタンスの行数が表示されます。この関数は、テーブル内の行数を数える場合に役立ちます。また、行数に基づいた改ページの指定など、より複雑なタスクにも役立ちます。詳細については、このトピックの「改ページ」を参照してください。

    次の式では、最も外側のデータ領域内の最初の行から最後の行までの行数が表示されます。この関数に Nothing キーワードを指定することで、最も外側のデータ領域内の最初の行からカウントが開始されます。子データ領域内でカウントを開始するには、データ領域の名前を使用します。

    =RowNumber(Nothing)
    

レポート データの表示方法

式を使用して、レポートへのデータの表示方法を操作できます。たとえば、2 つのフィールドの値を 1 つのテキスト ボックスに表示したり、レポートに関する情報を表示したり、レポートへの改ページの挿入方法を変更したりできます。

ページ ヘッダーとページ フッター

レポートをデザインする場合、必要に応じてレポート名とページ番号をレポート フッターに表示できます。この操作を行うには、以下の式を使用できます。

  • 次の式では、レポート名、およびレポートが実行された時刻が返されます。この式は、レポート フッターまたはレポート本文のテキスト ボックスで使用できます。時刻の書式は、.NET Framework の短い日付形式の書式設定文字列を使用して設定されます。

    =Globals.ReportName & ", dated " & 
    Format(Globals.ExecutionTime, "d")
    
  • 次の式では、レポートのページ番号および全ページ数が返されます。この式は、レポートのフッター内のテキスト ボックスで使用できます。

    =Globals.PageNumber & " of " & Globals.TotalPages
    

また、レポート ヘッダーまたはレポート フッターでは、レポート本文からレポート アイテムを参照できます。以下の例では、ディレクトリの一覧で検索する内容と同様に、ページ ヘッダーにページの最初と最後の値を表示する方法について説明します。この例では、LastName という名前のテキスト ボックスを含むデータ領域を想定しています。

  • 次の式は、ページ ヘッダーの左側にあるテキスト ボックスで使用されます。この式では、そのページの LastName テキスト ボックスの最初の値が返されます。

    =First(ReportItems!LastName.Value)
    
  • 次の式は、ページ ヘッダーの右側にあるテキスト ボックスで使用されます。この式では、そのページの LastName テキスト ボックスの最後の値が返されます。

    =Last(ReportItems!LastName.Value)
    

ページ ヘッダーまたはページ フッターのレポート アイテムの参照に対して集計を適用できます (ただし、レポート本文内のレポート アイテムの参照に対しては集計を適用できません)。次の例では、合計ページ数の表示方法について説明します。この例では、Cost という名前のテキスト ボックスを含むデータ領域を想定しています。

  • 次の式は、ページ ヘッダーまたはページ フッターで使用されます。この式では、Cost テキスト ボックスの値の合計がそのページに返されます。

    =Sum(ReportItems!Cost.Value)
    

    [!メモ]

    ページ ヘッダーまたはページ フッターでは、1 つの式につき 1 つのレポート アイテムしか参照できません。

改ページ

一部のレポートでは、グループやレポート アイテム上にではなく、またはグループやレポート アイテムに追加する形で、指定した行数の最後に改ページを挿入したい場合があります。この操作を行うには、データ領域にグループ (通常は詳細のすぐ外側のグループ) を作成して、グループに改ページを追加し、その後、指定された行数でグループ化を行うグループ式を追加します。

  • 次の式をグループ式で使用すると、25 行ごとに数値が割り当てられます。改ページがグループに定義されている場合、結果として、25 行ごとに改ページが設定されます。

    =Int((RowNumber(Nothing)-1)/25)
    

プロパティ

式は、テキスト ボックスにデータを表示するためだけに使用するものではありません。レポート アイテムにプロパティを適用する方法を変更する場合にも使用できます。レポート アイテムのスタイル情報を変更したり、情報の表示を変更したりすることができます。

書式

式を使用して、レポート内のレポート アイテムの表示方法を変更できます。

  • テキスト ボックスの Color プロパティで次の式を使用すると、Profit フィールドの値に応じてテキストの色が変更されます。

    =Iif(Fields!Profit.Value < 0, "Red", "Black")
    
  • データ領域にあるレポート アイテムの BackgroundColor プロパティで次の式を使用すると、各行の背景色に薄緑色と白が交互に設定されます。

    =Iif(RowNumber(Nothing) Mod 2, "PaleGreen", "White")
    

表示

レポート アイテムの表示プロパティを使用して、レポート内のアイテムの表示/非表示を切り替えることができます。テーブルなどのデータ領域では、最初に、式の値に基づいて詳細行を非表示にできます。

  • グループ内の詳細行の表示の初期設定で次の式を使用すると、PctQuota フィールドで 90% を超えるすべての売上の詳細行が表示されます。

    =Iif(Fields!PctQuota.Value>.9, False, True)
    

レポート パラメータ

パラメータの式を使用して、パラメータの既定値を変更できます。たとえば、パラメータを使用して、レポートの実行に使用するユーザー ID に基づき、特定のユーザーに合わせてデータをフィルタ処理することができます。

  • パラメータの既定値として次の式を使用すると、レポートを実行するユーザーのユーザー ID が収集されます。

    =User!UserID
    

カスタム コード

レポート内でカスタム コードを使用できます。カスタム コードは、レポート内に埋め込むか、またはレポートで使用されるカスタム アセンブリに格納します。カスタム コードの詳細については、「レポートへのカスタム コードの追加 (Visual Studio レポート デザイナ)」を参照してください。

  • 次の例では、埋め込まれたコードの ToUSD メソッドを呼び出し、StandardCost フィールド値を米ドル単位に変換します。

    =Code.ToUSD(Fields!StandardCost.Value)
    

参照

概念

レポートでの式の使用 (Visual Studio レポート デザイナ)
レポートでのレポート パラメータの定義 (Visual Studio レポート デザイナ)
レポートへのページ ヘッダーおよびページ フッターの追加 (Visual Studio レポート デザイナ)
レポートへのスタイルおよび書式の追加 (Visual Studio レポート デザイナ)
レポートへの対話機能、表示設定、およびナビゲーションの追加 (Visual Studio レポート デザイナ)