データの更新と保持
前の章では、ADO を使ってデータ ソース内のデータを取得する方法、データ内を移動する方法、データを編集する方法について説明しました。 もちろん、ユーザーがデータを変更できるようにすることがアプリケーションの目的である場合は、それらの変更を保存する方法を理解する必要があります。 Save メソッドを使って Recordset の変更をファイルに保持することも、Update または UpdateBatch メソッドを使って保存のためにデータ ソースに変更を送り返すこともできます。
前の章では、Recordset の複数の行のデータを変更しました。 ADO では、データ行の追加、削除、変更に関連する 2 つの基本的な概念がサポートされています。
最初の概念は、変更は Recordset に対して直ちに行われず、代わりに内部の "コピー バッファー" に対して行われる、というものです。 変更が必要ないと判断した場合、コピー バッファー内の変更は破棄されます。 変更を保持する場合は、コピー バッファーの変更が Recordset に適用されます。
2 つ目の概念は、ユーザーが行での作業の完了を宣言するとすぐに変更がデータ ソースに反映されるか (つまり、"イミディエイト" モード)、またはユーザーが行セットの作業の完了を宣言するまでセットに対するすべての変更が収集される (つまり、"バッチ" モード)、というものです。 LockType プロパティにより、基になるデータ ソースの変更が行われるタイミングが決まります。 adLockOptimistic または adLockPessimistic はイミディエイト モードを指定し、adLockBatchOptimistic はバッチ モードを指定します。 CursorLocation プロパティは、LockType で使用できる設定に影響を与える可能性があります。 たとえば、CursorLocation プロパティが adUseClient に設定されている場合、adLockPessimistic の設定はサポートされません。
イミディエイト モードでは、Update メソッドを呼び出すたびに変更がデータ ソースに反映されます。 バッチ モードでは、Update の呼び出しまたは現在の行位置の移動のたびに変更がコピー バッファーに保存されますが、変更がデータ ソースに反映されるのは UpdateBatch メソッドのときだけです。
このセクションでは、次のトピックを扱います。