カスタム イベントを利用したプロバイダとの通信

提供: RAD Studio
移動先: 案内検索

ソース データセットに渡すパラメータの指定 への移動


クライアント データセットは、Datasnap.Midas.IAppServer と呼ばれる特殊インターフェイスを介して、プロバイダ コンポーネントと通信します。 プロバイダがローカルの場合、IAppServer は自動生成オブジェクトへのインターフェイスとなり、このオブジェクトは、クライアント データセットとプロバイダ間のすべての通信を処理します。 プロバイダがリモートの場合、IAppServer はアプリケーション サーバー上のリモート データ モジュールへのインターフェイス、または、(SOAP サーバーの場合)接続コンポーネントによって生成されたインターフェイスとなります。

TClientDataSet は、IAppServer インターフェイスを使用した通信をカスタマイズする手段を提供します。 クライアント データセットのプロバイダで指示される各 IAppServer メソッド呼び出しの前後でTClientDataSet は特殊なイベントを受け取り、これにより、プロバイダと任意の情報をやり取りできるようになります。 これらのイベントは、プロバイダ上の同様のイベントとマッチングされます。 このため、たとえば、、クライアント データセットが ApplyUpdates メソッドを呼び出す際、次のイベントが発生します:

  1. クライアント データセットは BeforeApplyUpdates イベントを受け取り、そこで OwnerData と呼ばれる、OleVariant 内の任意のカスタム情報が指定されています。
  2. プロバイダは BeforeApplyUpdates イベントを受け取り、そこでクライアント データセットからの OwnerData に応答し、OwnerData の値を新しい情報に更新することができます。
  3. プロバイダは、データ パケットをアセンブルする通常の処理を行います(付随するすべてのイベントも含む)。
  4. プロバイダは AfterApplyUpdates イベントを受け取り、OwnerData の現在の値に応答し、それをクライアント データセットへの値に更新することができます。
  5. クライアント データセットは AfterApplyUpdates イベントを受け取り、OwnerData の戻り値に応答することができます。

その他の IAppServer メソッド呼び出しにもすべて、同様の BeforeXXXAfterXXX のイベントのセットが伴い、カスタマイズすることができます。

さらに、クライアント データセットには特別なメソッド DataRequest があり、これの唯一の用途は、プロバイダとのアプリケーション固有の通信です。 クライアント データセットが DataRequest を呼び出すと、OleVariant をパラメータとして渡し、これには必要な任意の情報を含めることができます。 そして、これはプロバイダ上に OnDataRequest イベントを生成し、そこでアプリケーション定義の方法で応答し、クライアント データセットに値を返すことができます。

関連項目