カスタム アセンブリ オブジェクトの初期化
状況によっては、カスタム アセンブリ クラスのプロパティ値とフィールド値をインスタンス化する際、これらを初期化する必要があります。初期化が必要になる可能性が最も高いのは、レポートのグローバル オブジェクト コレクションからカスタム クラスと値を使用する場合です。そのためには、レポートの Code オブジェクトの OnInit メソッドをオーバーライドします。OnInit にアクセスするには、レポート定義の Code 要素を使用します。レポートで使用するカスタム アセンブリのクラスのプロパティ値またはフィールド値を初期化する方法は 2 つあります。1 つは、OnInit を使用して、クラスの新しいインスタンスを宣言し、作成する方法。もう 1 つは、OnInit を使用してパブリックに使用できるメソッドを呼び出す方法です。
グローバル オブジェクト コレクションと初期化
カスタム クラス変数を初期化するときは、Globals および User の各コレクションを使用できます。レポート ライフサイクルで、OnInit メソッドを呼び出す時点では、Parameters、Fields および ReportItems の各コレクションを使用できません。共有コレクションの Globals または User を使用するには、Report オブジェクト参照を含める必要があります。たとえば、レポートにアクセスしているユーザーの現在の言語に基づいてカスタム クラスを初期化する場合、Code 要素は次のようになります。
<Code>
Dim m_myClass As MyClass
Protected Overrides Sub OnInit()
m_myClass = new MyClass(Report.User!Language, _
Report.Globals!ExecutionTime)
End Sub
</Code>
前述のように、クラスのプロパティ値とフィールド値を初期化する 1 つの方法は、オーバーライドされたコンストラクターを呼び出すことによってクラスを宣言し、その新しいインスタンスを作成することです。
カスタム アセンブリのクラスのプロパティ値とフィールド値を初期化するもう 1 つの方法は、OnInit メソッドから定義したパブリックに使用できるメソッドを呼び出すことです。最初に、レポート定義ファイルのクラスのインスタンス名を追加する必要があります。適切なアセンブリ参照とインスタンス名を追加した後は、初期化メソッドを呼び出して、クラスのプロパティ値とフィールド値を初期化できます。OnInit メソッドは、次のようになります。
<Code>
Protected Overrides Sub OnInit()
m_myClass.MyInitializationMethod(Report.User!Language, _
Report.Globals!ExecutionTime)
End Sub
</Code>
カスタム クラスのアセンブリ参照とインスタンス名を追加する方法の詳細については、「レポートにアセンブリ参照を追加する方法 (SSRS)」を参照してください。
グローバル オブジェクト コレクションの詳細については、「式での組み込みコレクションの使用 (レポート ビルダー 3.0 および SSRS)」を参照してください。