次の方法で共有


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

参照

参照

CDaoRecordset クラス

階層図

CDaoRecordset::GetCacheSize

CDaoRecordset::GetCacheStart

CDaoRecordset::SetCacheSize

CDaoRecordset::SetCacheStart

その他の技術情報

CDaoRecordset のメンバ