レポートへのカスタム コードの追加 (Visual Studio レポート デザイナ)

レポートにカスタム関数を追加したり、外部アセンブリの関数に参照を追加することができます。プロジェクトをコンパイルすると、Microsoft.VisualBasicAllMembers.T:System.Convert、および AllMembers.T:System.Math の各アセンブリが自動的に参照されます。その他のアセンブリを参照するには、[レポートのプロパティ] ダイアログ ボックスを使用するか、レポート定義の CodeModules 要素を使用します。[レポートのプロパティ] ダイアログ ボックスを使用して、カスタム関数を定義することもできます。レポート定義でカスタム関数を定義するには、Code 要素を使用します。関数は渡されたデータ値のセットではありません (特に、カスタム集計はサポートされていません)。

レポート全体の式で使用するカスタム コードを記述できます。それには、レポート内にコードを埋め込むか、またはカスタム アセンブリ内でメソッドを参照する 2 つの方法があります。複雑な関数や単一のレポート内で何度も使用される関数には、埋め込みコードを使用します。コードを 1 か所に保持し、複数のレポートでこれを共有する場合は、カスタム アセンブリを使用します。

埋め込みコード

レポート内でコードを使用するには、レポートにコード ブロックを追加します。このコード ブロックには、複数のメソッドを使用できます。埋め込みコード内のメソッドは、Microsoft Visual Basic で記述し、インスタンス ベースである必要があります。

レポートにコードを追加するには、次の手順を実行します。

  1. [レポート] メニューの [レポートのプロパティ] をクリックします。

    [!メモ]

    [レポート] メニューが使用できない場合は、レポート デザイン領域内をクリックします。

  2. [コード] タブの [カスタム コード] で、コードを入力します。

埋め込みコード内のメソッドは、グローバルに定義されている Code メンバを介して利用できます。Code メンバとメソッド名を参照することで、これらのメソッドにアクセスできます。次の例では、ToUSD メソッドを呼び出し、StandardCost フィールド値を米ドル単位に変換します。

=Code.ToUSD(Fields!StandardCost.Value)

カスタム アセンブリ

レポートでカスタム アセンブリを使用するには、まずアセンブリを作成して、これをプロジェクトが利用できるようにし、レポートにアセンブリへの参照を追加してから、レポート内の式を使用してこのアセンブリ内のメソッドを参照します。レポートがレポート サーバーに配置される場合は、カスタム アセンブリもレポート サーバーに配置する必要があります。

レポートにアセンブリへの参照を追加するには、次の手順を実行します。

  1. [レポート] メニューの [レポートのプロパティ] をクリックします。

    [!メモ]

    [レポート] メニューが使用できない場合は、レポート デザイン領域内をクリックします。

  2. [参照] タブで、次の操作を行います。

    • [参照] で、追加ボタン ([...]) をクリックし、[参照の追加] ダイアログ ボックスで、アセンブリを選択または参照します。

    • [クラス] で、クラス名を入力し、レポート内で使用するインスタンス名を指定します。

      [!メモ]

      インスタンス ベースのメンバにのみ、クラスおよびインスタンスの名前を指定してください。[クラス] の一覧に静的メンバを指定しないでください。

式からカスタム コードを参照するには、アセンブリ内のクラスのメンバを呼び出す必要があります。この方法は、メソッドが静的であるか、インスタンス ベースであるかにより異なります。カスタム アセンブリ内の静的メソッドは、レポート内でグローバルに利用できます。静的メソッドには、名前空間、クラス、メソッド名を指定して、式からアクセスできます。次の例では、ToGBP メソッドを呼び出し、StandardCost フィールド値をドルから英ポンドに変換しています。

=CurrencyConversion.DollarCurrencyConversion.ToGBP(Fields!StandardCost.Value)

インスタンス ベースのメソッドは、グローバルに定義されている Code メンバを介して利用できます。まず Code メンバを参照し、続いてインスタンスとメソッド名を参照することで、これらのメソッドにアクセスできます。次の例では、ToEUR インスタンス メソッドを呼び出し、StandardCost フィールド値をドルからユーロに変換しています。

=Code.m_myDollarCoversion.ToEUR(Fields!StandardCost.Value)

[!メモ]

レポート デザイナでは、カスタム アセンブリは 1 度読み込まれると、Visual Studio を終了するまでアンロードされません。レポートをプレビューして、レポートで使用するカスタム アセンブリに変更を加え、その後再びレポートをプレビューした場合、2 回目のプレビューでは行った変更が表示されません。アセンブリを再度読み込むには、Visual Studio を終了してから再起動し、レポートをプレビューします。

カスタム アセンブリの使用の詳細については、SQL Server 2005 オンライン ブックの「レポートでのカスタム アセンブリの使用 (Using Custom Assemblies with Reports)」で検索できます。オンライン ブックは、Visual Studio 2008 のほとんどのエディションで使用できます。また、www.microsoft.com の MSDN で参照することもできます。オンライン ブックのカスタム アセンブリに関する情報は、ReportViewer コントロールに配置するレポートに適用されます。

参照

リファレンス

[参照の編集] ダイアログ ボックス (Visual Studio レポート デザイナ)
[クラスの編集] ダイアログ ボックス (Visual Studio レポート デザイナ)

概念

レポートでの式の使用 (Visual Studio レポート デザイナ)