更新をキャッシュするためのデータセット タイプの選択
クライアント データセットを利用した更新のキャッシュ への移動
Delphi には、更新をキャッシュするための専用のクライアント データセット コンポーネントがいくつか付属しています。 各クライアント データセットは、特定のデータ アクセス メカニズムに関連付けられています。 これらを次の表に示します。
更新をキャッシュするための専用のクライアント データセット:
クライアント データセット | データ アクセス メカニズム |
---|---|
dbExpress | |
DBLocalI.TIBClientDataSet |
InterBase Express |
更新をキャッシュするための汎用のクライアント データセット:
クライアント データセット | データ アクセス メカニズム |
---|---|
dbExpress、dbGo、BDE |
汎用のクライアント データセットを使用して更新をキャッシュすることができます(「クライアント データセットでプロバイダを使用する」)。
メモ: それぞれのデータ アクセス メカニズムに関連付けられている専用のクライアント データセットでは実際には、プロバイダやソース データセットも使用します。 ただし、それらのプロバイダやソース データセットはどちらも、クライアント データセットの内部にあります。
専用クライアント データセットのいずれか 1 つを使用して更新をキャッシュするのが最も簡単です。 とは言え、TClientDataSet を外部プロバイダと共に使用するのが望ましい場合もあります。
- 専用のクライアント データセットがないデータ アクセス メカニズムを用いる場合は、TClientDataSet を外部プロバイダ コンポーネントと共に使用する必要があります。 たとえば、データが XML ドキュメントやカスタム データセットから得られる場合です。
- マスタ/詳細の関係にあるテーブルを扱う場合は、TClientDataSet を使用し、それを、マスタ/詳細リレーションシップでリンクされている 2 つのソース データセットのマスタ テーブルにプロバイダを使って接続する必要があります。 クライアント データセットでは、詳細データセットをネストしたデータセット フィールドとみなします。 マスタ テーブルと詳細テーブルに対する更新を正しい順序で適用できるようにするために、このようなアプローチが必要になります。
- クライアント データセットとプロバイダの間の通信(たとえば、クライアント データセットがプロバイダからレコードを取得する前後)に応答するイベント ハンドラのコードを作成する場合は、TClientDataSet を外部プロバイダ コンポーネントと共に使用する必要があります。 専用のクライアント データセットは主に多層アプリケーションを対象としているため、更新を適用するうえで最も重要なイベント(OnReconcileError、BeforeUpdateRecord、OnGetTableName)は公開しますが、クライアント データセットとそのプロバイダの間の通信に関連するイベントは公開しません。