次の方法で共有


CDaoRecordset::FillCache

レコードセットから指定されたレコード数分キャッシュされます。

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 のメンバー