アプリケーション サーバー上のデータセットのオーバーライド
特定のデータ アクセス メカニズムと関連付けられているクライアント データセットでは、CommandText プロパティと CommandType プロパティを使用して、データセットが表すデータを指定します。ただし、TClientDataSet を使用する場合には、データはクライアント データセットではなくソース データセットによって指定されます。通常、このソース データセットには、データを生成する SQL 文またはデータベース テーブルやストアド プロシージャの名前を指定するプロパティがあります。
プロバイダによっては、どのデータを表すかを示すソース データセットのプロパティを TClientDataSet がオーバーライドできる場合があります。つまり、プロバイダによっては、クライアント データセットの CommandText プロパティで、どのデータを表すかを示すプロバイダのデータセットのプロパティを置き換えられるということです。これにより、TClientDataSet はどのデータが必要かを動的に指定することができます。
デフォルトでは、外部プロバイダ コンポーネントは、クライアント データセットがこのように CommandText の値を使用することを許しません。TClientDataSet が CommandText プロパティを使用できるようにするには、プロバイダの Options プロパティに poAllowCommandText を追加する必要があります。追加しなければ、CommandText の値は無視されます。
メモ: TBDEClientDataSet または TIBClientDataSet の Options プロパティから poAllowCommandText を削除してはなりません。クライアント データセットの Options プロパティは内部プロバイダに転送されるため、poAllowCommandText を削除すると、クライアント データセットはアクセスするデータを指定できなくなります。
クライアント データセットは、CommandText の文字列を次の 2 とおりの状況でプロバイダに送信します。
- クライアント データセットが最初に開かれたとき。プロバイダから最初のデータ パケットを取得した後、その後のデータ パケットを取得するときには、クライアント データセットは CommandText を送信しません。
- クライアント データセットがプロバイダに Execute コマンドを送信するとき。
上記以外のときに SQL コマンドを送信したり、テーブル名やストアド プロシージャ名を変更するには、AppServer プロパティとして提供されている IAppServer インターフェイスを明示的に使用しなければなりません。このプロパティは、クライアント データセットがプロバイダとの通信に使用するインターフェイスを表します。
関連項目
- プロバイダの指定
- ソース データセットまたはドキュメントからのデータの要求
- ソース データセットに渡すパラメータの指定
- アプリケーション サーバーからのパラメータの取得
- サーバーからの制約の処理
- レコードの最新状態への更新
- カスタム イベントを使用したプロバイダとの通信