次の方法で共有


式でのカスタム コード参照の使用 (レポート ビルダ 2.0)

レポートに埋め込まれたカスタム コードには参照を追加できます。カスタム定数、複雑な関数、または 1 レポート内で何度も使用される関数には、埋め込みコードを使用します。

実行時に一度評価し、レポート処理全体で同じ値を保持しておく必要のある、タイミングに依存するような計算の場合は、レポート変数とグループ変数のどちらを使用するかを検討してください。詳細については、「式におけるレポート変数コレクションとグループ変数コレクションの参照の使用 (レポート ビルダ 2.0)」を参照してください。

カスタム コードには、新しいカスタム定数、変数、関数、またはサブルーチンを含めることができます。Parameters コレクションなど、組み込みコレクションへの読み取り専用の参照を含めることが可能です。ただし、レポート データ値セットをカスタム関数に渡すことはできません。特に、カスタム集計はサポートされていません。

埋め込みコード

埋め込みコードをレポートに追加するには、[レポートのプロパティ] ダイアログ ボックスの [コード] ページを使用します。作成したコード ブロックでは、複数のメソッドを使用できます。埋め込みコード内のメソッドは、MicrosoftVisual Basic で記述されており、インスタンス ベースである必要があります。 レポート プロセッサは、System.Convert 名前空間および System.Math 名前空間の参照を自動的に追加します。レポート ビルダ 2.0 では、それ以外のアセンブリ参照に対する参照はサポートされません。

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

=Code.ToUSD(Fields!StandardCost.Value)

カスタム コード内で組み込みコレクションを参照するには、組み込みの Report オブジェクトへの参照を含めます。

=Report.Parameters!Param1.Value

次の例は、いくつかのカスタム定数と変数を定義する方法を示しています。

Public Const MyNote = "Authored by Bob"
Public Const NCopies As Int32 = 2
Public Dim  MyVersion As String = "123.456"
Public Dim MyDoubleVersion As Double = 123.456

[式] ダイアログ ボックスの [定数] カテゴリにはカスタム定数が表示されませんが (組み込み定数のみが表示されます)、次の例に示すように、任意の式からカスタム定数への参照を追加できます。式の中では、カスタム定数が Variant として扱われます。

=Code.MyNote
=Code.NCopies
=Code.MyVersion
=Code.MyDoubleVersion

組み込みのオブジェクト コレクションおよび初期化の詳細については、「式でのグローバル コレクションの使用」を参照してください。

カスタム コードからパラメータを参照する例

レポート定義のコード ブロックまたはユーザーが指定したカスタム アセンブリのカスタム コードを経由してグローバル パラメータ コレクションを参照できます。パラメータ コレクションは読み取り専用で、パブリック反復子がありません。コレクションのステップ実行に Visual Basic の For Each 構造体を使用することはできません。レポート定義内で定義されたパラメータの名前をコード内で参照する前に、その名前を確認しておく必要があります。ただし、複数の値を持つパラメータのすべての値は、繰り返し処理することができます。詳細については、「式でのカスタム コード参照の使用 (レポート ビルダ 2.0)」を参照してください。

次の表には、カスタム コードから組み込みコレクション Parameters を参照する例を示しています。

説明

式での参照

カスタム コード定義

グローバル パラメータ コレクション全体をカスタム コードに渡します。

この関数は、特定のレポート パラメータ MyParameter の値を返します。

=Code.DisplayAParameterValue(Parameters)

Public Function DisplayAParameterValue(

ByVal parameters as Parameters) as Object

Return parameters("MyParameter").Value

End Function

個別のパラメータをカスタム コードに渡します。

この例では、渡されたパラメータの値が返されます。パラメータが複数の値を持つパラメータである場合、返される文字列はすべての値の連結になります。

=Code.ShowParametersValues(Parameters!DayOfTheWeek)

Public Function ShowParameterValues(ByVal parameter as Parameter)
 as String
   Dim s as String 
   If parameter.IsMultiValue then
      s = "Multivalue: " 
      For i as integer = 0 to parameter.Count-1
         s = s + CStr(parameter.Value(i)) + " " 
      Next
   Else
      s = "Single value: " + CStr(parameter.Value)
   End If
   Return s
End Function

カスタム アセンブリ

レポート ビルダ 2.0 では、レポート サーバーでのみ、カスタム アセンブリがサポートされます。レポート サーバーにインストールされたコードへのアクセスの詳細については、Reporting Services のドキュメント (SQL Server オンライン ブック) の「式を使用したカスタム アセンブリへのアクセス」を参照してください。