CDaoRecordset::AddNew
テーブル型またはダイナセット型のレコードセットに新しいレコードを追加するには、このメンバー関数を呼び出します。
virtual void AddNew( );
解説
レコードのフィールドは、最初に null です。(データベースの用語で、Null 値は「値」ことを意味します null C++ のと同じになります)。操作を完了するには、更新 のメンバー関数を呼び出す必要があります。更新 は、データ ソースへの変更を保存します。
注意 |
---|
レコードを編集し、別のレコードに 更新を呼び出さずにスクロールすると、変更は警告なしに失われます。 |
ダイナセット型のレコードセットに AddNewを呼び出してレコードを追加すると、レコードがレコードセットに表示され、CDaoRecordset のすべての新しいオブジェクトから参照できるようにする基になるテーブルに含まれています。
新しいレコードの位置は、レコードセットの種類によって決まります:
新しいレコードが挿入ダイナセット型のレコードセットでは、保証されます。この動作は、パフォーマンスと同時実行される理由から Microsoft Jet 3.0 によって異なります。目標が新しく追加したレコードが現在のレコードを変更すると、最後のレコードのブックマークを取得し、そのブックマークに移動します:
rs.SetBookmark(rs.GetLastModifiedBookmark());
インデックスが指定したテーブル タイプのレコードセットで、レコードは、並べ替えの順序が適切な場所に返されます。インデックスが指定されていない場合、新しいレコードがレコードセットの最後に戻ります。
AddNew を使用する前に現在のレコードが現在のレコードになります。新しい現在のレコードとレコードセットのサポートのブックマークを作成する場合は、ブックマークの呼び出し SetBookmark は、基になる DAO レコードセット オブジェクトの最終更新のプロパティによって識別されます。これに追加したレコードにカウンターの (自動インクリメント) フィールドの値を決定する場合に便利です。詳細については、GetLastModifiedBookmarkを参照してください。
データベース サポートのトランザクション、トランザクションの AddNew の呼び出しのパーツを作成できます。トランザクションに関する詳細については、クラス CDaoWorkspaceを参照してください。AddNewを呼び出す前に CDaoWorkspace::BeginTrans を呼び出す必要があることに注意してください。
[開く] のメンバー関数は、が呼び出されていないレコードセットの AddNew を呼び出すことはできません。CDaoException は追加できないレコードセットの AddNew を呼び出すとスローされます。レコードセットが CanAppendの呼び出しによって更新可能かどうかを確認できます。
これらは DAO レコード フィールド エクスチェンジ (DFX) 機構を通じてデータ ソースのレコードを確保するフレームワークのマークによって変更されたフィールド データ メンバー書き込まれます。フィールドの値を変更しても、通常、ダーティなフィールドが自動的に設定するため、ほとんど独自 SetFieldDirty を呼び出す必要はありませんが、場合、値がフィールド データ メンバーにかかわらず、または列が明示的に更新または挿入できるようにする必要がある場合があります。DFX 機構は、PSEUDO NULLの使用が行われます。詳細については、CDaoFieldExchange::m_nOperationを参照してください。
Double バッファリングの機構を使用しない場合、フィールドの値を変更すると、ダーティとして自動的にフィールドを設定しません。この場合、ダーティ フィールドを明示的に設定する必要があります。m_bCheckCacheForDirtyFields に含まれているフラグは、このフィールドの自動チェックを制御します。
[!メモ]
レコード (つまり、フィールドの自動チェックが有効) Double、バッファー CancelUpdate を呼び出すことは、の値に AddNew か [編集] が呼び出される前にメンバー変数を復元します。
関連情報は、DAO ヘルプ トピック「AddNew メソッド」、「」、「CancelUpdate メソッドの最終更新プロパティ」、および「EditMode プロパティ」を参照してください。
必要条件
Header: afxdao.h