スナップショット
スナップショットは、レコードセットの一種であり、スナップショット生成時のデータの状態を静的に保存します。 スナップショットを開いてすべてのレコードに移動した場合、スナップショット内のレコードとその値は、Requery を呼び出してスナップショットをビルドし直さない限り変化しません。
注意
このトピックの内容は、MFC ODBC クラスに該当します。 MFC ODBC クラスではなく MFC DAO クラスをお使いの場合は、「CDaoRecordset::Open」にあるスナップショット タイプのレコードセットについての記述を参照してください。
スナップショットは、データベース クラスから作成され、更新可能か上書き禁止に設定できます。 ダイナセットとは異なり、更新可能スナップショットは、他のユーザーによるレコードの値の変更を反映しませんが、プログラムによる更新または削除だけを反映します。 スナップショットにレコードを追加しても、Requery を呼び出さない限り、表示に反映されません。
ヒント
スナップショットは ODBC 静止カーソルです。 静止カーソルは、目的のレコードにスクロールするまで、実際にデータを取りに行きません。 すべてのレコードを即座に取り出すには、レコードセットの末尾までスクロールしてから、必要なレコードの先頭にスクロールします。 ただし、この方法では、末尾までスクロールするためのオーバーヘッドが生じるため、効率が低下することがあります。
スナップショットは、データを固定しておく必要がある場合 (レポートの作成やデータの計算を行う場合) に特に役に立ちます。 時間が経過するとスナップショット上のデータとデータ ソースのデータが食い違ってくるため、ときどきスナップショットを作り直す必要があります。
スナップショットのサポートは、ODBC カーソル ライブラリに依存しています。カーソル ライブラリは、どのレベル 1 ドライバーに対しても、静止カーソルと位置指定更新 (更新処理のために必要な機能) をサポートします。 この機能を利用するには、カーソル ライブラリ DLL を読み込む必要があります。 カーソル ライブラリを読み込むには、CDatabase オブジェクトを生成して OpenEx メンバー関数を呼び出す際に、dwOptions パラメーターで CDatabase::useCursorLib オプションを指定します。 Open メンバー関数を呼び出すと、既定で、カーソル ライブラリが読み込まれます。 スナップショットの代わりにダイナセットを使用している場合は、カーソル ライブラリを読み込まないようにしてください。
スナップショットを使用できるのは、CDatabase オブジェクトの構築時に ODBC カーソル ライブラリを読み込んだか、使用する ODBC ドライバーで静止カーソルをサポートしている場合だけです。
注意
ODBC ドライバーによっては、スナップショット (静止カーソル) を更新できない場合があります。 ドライバーの説明書を調べて、サポートしているカーソルの種類と並列性のタイプを確認してください。 確実にスナップショットを更新できるようにするには、CDatabase オブジェクトを作成するときに、カーソル ライブラリをメモリに読み込んでおきます。 詳細については、「ODBC : ODBC カーソル ライブラリ」を参照してください。
注意
スナップショットとダイナセットの両方を同時に使うには、2 つの異なる CDatabase オブジェクトを用意する必要があります (個別に接続します)。
すべてのレコードセットに共通するプロパティの詳細については、「レコードセット (ODBC)」を参照してください。 ODBC カーソル ライブラリを含む ODBC とスナップショットの詳細については、「ODBC の基礎」を参照してください。