CDaoRecordset::FillCache
更新 : 2007 年 11 月
レコードセットから指定されたレコード数分キャッシュされます。
void FillCache(
long* pSize = NULL,
COleVariant* pBookmark = NULL
);
pSize
キャッシュに設定する行数を指定します。このパラメータを省略すると、値は基になる DAO オブジェクトの CacheSize プロパティの設定によって決まります。pBookmark
ブックマークを指定する COleVariant。キャッシュの設定は、このブックマークで示されたレコードから開始されます。このパラメータを省略すると、キャッシュは基になる DAO オブジェクトの CacheStart プロパティで示されたレコードから開始されます。
キャッシングは、リモート サーバーからのデータの取り出し、フェッチを行うアプリケーションのパフォーマンスを向上させます。キャッシュは、アプリケーション実行中にデータが再度要求されるという仮定のもとに、サーバーから直前にフェッチされたデータを保持するローカル メモリ領域です。データが要求されると、Microsoft Jet データベース エンジンは、時間がかかるサーバーからのデータのフェッチの前に、キャッシュを調べます。非 ODBC のデータ ソースにデータ キャッシュを使用しても、データはキャッシュに保存されないため、効果はありません。
フェッチされるレコードがキャッシュに入るまで待たなくても、FillCache メンバ関数を呼び出すことで、いつでも明示的にキャッシュに移すことができます。FillCache は、一度に 1 レコードではなく数レコードをフェッチするので、キャッシュを最も速く設定できる方法となっています。たとえば、1 画面分のレコードが表示されている間に、アプリケーションで FillCache を呼び出して次の 1 画面分のレコードをフェッチさせることができます。
レコードセット オブジェクトでアクセスされる ODBC データベースは、ローカル キャッシュを持つことができます。キャッシュを作成するには、リモート データ ソースからレコードセット オブジェクトを開き、レコードセットの SetCacheSize メンバ関数と SetCacheStart メンバ関数を呼び出します。lSize と lBookmark が形成する範囲の一部、または全体が SetCacheSize および SetCacheStart で指定された範囲外になると、その範囲外になるレコードセットの部分は無視され、キャシュに読み込まれません。FillCache がリモート データ ソースにあるレコード数よりも多い数のレコードを要求すると、残りのレコードがフェッチされるだけで、例外はスローされません。
キャッシュからフェッチされたレコードには、ほかのユーザーが並列してデータ ソースに加えた変更を反映しません。
FillCache は、まだキャッシュされていないレコードだけをフェッチします。キャッシュされているすべてのデータを強制的に更新するには、パラメータ lSize に 0 を渡して SetCacheSize メンバ関数を呼び、パラメータ lSize に元の値を渡して再度 SetCacheSize を呼び出します。その後 FillCache を呼び出します。
関連情報については、DAO ヘルプの「FillCache Method」を参照してください。
ヘッダー : afxdao.h