レコードセット: レコード更新のしくみ (ODBC)
このトピックの内容は、MFC ODBC クラスに該当します。
レコードセットでは、データソースからレコードを選択するだけでなく、必要に応じて、選択したレコードを更新または削除したり、新しいレコードを追加したりできます。 レコードセットの更新可能かどうかは、接続されたデータソースが更新可能かどうか、レコードセットオブジェクトを作成するときに指定するオプション、作成される SQL によって決まります。
Note
オブジェクトの基になる SQL は、 CRecordset レコードセットの変更可能性に影響を与える可能性があります。 たとえば、SQL に join 句またはGROUP by句が含まれている場合、MFC では、このようにして、の使用を FALSE に設定します。
Note
このトピックの内容は、バルク行フェッチが実装されていない CRecordset の派生オブジェクトを対象にしています。 バルク行フェッチを使用している場合は、「レコード セット: レコードを一括フェッチする (ODBC)」を参照してください。
このトピックでは、次の内容について説明します。
レコードセットの更新におけるロール とフレームワークの機能。
レコードセット: AddNew、Edit、Delete Work (ODBC) で は、レコードセットの観点からこれらの関数のアクションを記述します。
レコードセット: 更新プログラム (ODBC) の詳細につい ては、トランザクションが更新に与える影響、レコードセットまたはスクロールを閉じることによって進行中の更新に影響を与える方法、および更新プログラムが他のユーザーの更新プログラムと対話する方法について説明します。
レコードセットの更新でのロール
次の表に、レコードを追加、編集、または削除するためのレコードセットを使用する場合のロールと、フレームワークの機能を示します。
レコードセットの更新: ユーザーとフレームワーク
| 自分 | フレームワークの役割 |
|---|---|
| データソースが更新可能である (または追加可能である) かどうかを判断します。 | には、データソースの使用可能性をテストするための CDatabase メンバー関数が用意されています。 |
| 更新可能なレコードセット (任意の型) を開きます。 | |
やなどの update 関数を呼び出すことによって、レコードセットが更新可能かどうかを判断し CRecordsetCanUpdateCanAppend ます。 |
|
| レコードセットのメンバー関数を呼び出して、レコードを追加、編集、および削除します。 | レコードセットオブジェクトとデータソースとの間でデータを交換するメカニズムを管理します。 |
| 必要に応じて、トランザクションを使用して更新プロセスを制御します。 | CDatabaseには、トランザクションをサポートするメンバー関数が用意されています。 |
トランザクションの詳細については、「 Transaction (ODBC)」を参照してください。
エディットバッファー
レコードセットのフィールドデータメンバーは、まとめて、現在のレコードを1つ含むレコードを含む編集バッファーとして機能し — ます。 更新操作では、このバッファーを使用して現在のレコードを操作します。
レコードを追加すると、エディットバッファーを使用して新しいレコードが作成されます。 レコードの追加が完了すると、以前のレコードが再び最新の状態になります。
レコードを更新 (編集) する場合、エディットバッファーを使用して、レコードセットのフィールドデータメンバーを新しい値に設定します。 更新が完了すると、更新されたレコードは最新の状態のままになります。
AddNewまたはEditを呼び出すと、現在のレコードが保存されるので、必要に応じて後で復元できます。 Deleteを呼び出すと、現在のレコードは格納されず、削除済みとしてマークされ、別のレコードにスクロールする必要があります。
Note
編集バッファーは、レコードの削除時にロールを持ちません。 現在のレコードを削除すると、レコードは削除済みとしてマークされます。レコードセットは、別のレコードにスクロールするまで "レコードではありません" と表示されます。
ダイナセットとスナップショット
レコードにスクロールすると、レコードの内容が更新されます。 スナップショット はレコードの静的な表現であるため、 Requeryを呼び出さない限り、レコードの内容は更新されません。 ダイナセットのすべての機能を使用するには、適切なレベルの ODBC API サポートに準拠した ODBC ドライバーを操作する必要があります。 詳細については、「 ODBC および ダイナセット」を参照してください。