カスタム アセンブリ オブジェクトの初期化

場合によっては、カスタム アセンブリ クラスのプロパティ値とフィールド値をインスタンス化するときに初期化が必要になる場合があります。 ほとんどの場合、レポートのグローバル オブジェクト コレクションから使用できる値を使用して、カスタム クラスを初期化する必要があります。 そのためには、レポートの Code オブジェクトの OnInit メソッドをオーバーライドします。 OnInit にアクセスするには、レポート定義の Code 要素を使用します。 レポートで使用する予定のカスタム アセンブリのクラスのプロパティ値またはフィールド値を初期化する方法は 2 つあります。1 つは、OnInit を使用してクラスの新しいインスタンスを宣言し、作成する方法、もう 1 つは、OnInit を使用してパブリックに使用できるメソッドを呼び出す方法です。

グローバル オブジェクト コレクションと初期化

カスタム クラス変数を初期化するときは、 Globals および User の各コレクションを使用できます。 OnInit メソッドが呼び出されたとき、レポート ライフサイクルの時点では、Parameters、Fieldsおよび ReportItems コレクションを使用できません。 共有コレクションの Globals または User を使用するには、Report オブジェクト参照を含める必要があります。 たとえば、レポートにアクセスしているユーザーの現在の言語に基づいてカスタム クラスを初期化する場合、Code 要素は次のようになります。

Dim m_myClass As MyClass  

Protected Overrides Sub OnInit()  
   m_myClass = new MyClass(Report.User!Language, _  
      Report.Globals!ExecutionTime)  
End Sub  

前述のように、クラスのプロパティ値とフィールド値を初期化する 1 つの方法は、オーバーライドされたコンストラクターを呼び出すことによってクラスを宣言し、その新しいインスタンスを作成することです。

カスタム アセンブリのクラスのプロパティ値とフィールド値を初期化するもう 1 つの方法は、OnInit メソッドから定義したパブリックに使用できるメソッドを呼び出すことです。 最初に、レポート定義ファイルのクラスのインスタンス名を追加する必要があります。 適切なアセンブリ参照とインスタンス名を追加したら、初期化メソッドを呼び出して、クラスのプロパティとフィールド値を初期化できます。 OnInit メソッドは、次のようになります。

Protected Overrides Sub OnInit()  
   m_myClass.MyInitializationMethod(Report.User!Language, _  
      Report.Globals!ExecutionTime)  
End Sub  

カスタム クラスのアセンブリ参照とインスタンス名を追加する方法の詳細については、「レポートにアセンブリへの参照を追加する (SSRS)」を参照してください。

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

レポートでのカスタム アセンブリの使用