3

3 層の datasnap アーキテクチャで clientdataset のコンテンツをフィルター処理する方法について自問自答しています。Oracle DB <=> My Datasnap Server <=> My Datasnap clients

TDSProviderConnectionおよび を介してアクセスする Oracle テーブルがありますTClientDataset

複数のクライアントが、という名前のフィールドを含むデータセットを使用しています"clientId"。各クライアントが自分の行のみを要求するようにします ( WHERE clientId = 'Client1'SQL ステートメントのように)。

私が正しく理解していれば、フィルターを使用してもオーバーヘッドは削減されません。

myclientdataset.Filter:= 'ClientId = Client1';
myclientdataset.Filtered:= true;

とにかくこれはすべてのクライアントを渡します。サーバーで送信内容をフィルタリングしたい。

しかし、これらのコンポーネントを使用してこれを達成する方法がわかりません。

どんなアイデアでも大歓迎です。

よろしく、JP

4

2 に答える 2

2

このチュートリアルで説明されているように、パラメーター化されたクエリのタスクのように聞こえます。各クライアントが独自のパラメータを設定すると、要求されたデータのみが各クライアントに転送されます。

于 2012-05-06T18:38:00.543 に答える
0

Filter プロパティは、ClientDataSet に読み込まれたコンテンツをフィルター処理します。基になるデータベースから取得するデータには影響しません。

ClientDataSet が基になるリレーショナル データベースから取得したデータに影響を与えるようにするには、CommandText プロパティでクエリを指定するか、CommandText プロパティにパラメーター化されたクエリ (またはストアド プロシージャの呼び出し) を含めてから、Params プロパティを使用して値を定義します。あなたのパラメータの。

于 2013-03-23T17:03:06.083 に答える