次の方法で共有


CDaoRecordset::AddNew

更新 : 2007 年 11 月

テーブル タイプのレコードセット、またはダイナセット タイプのレコードセットに新しいレコードを追加します。

virtual void AddNew( );

解説

レコードのフィールドは、初期状態では Null になります。(C++ での NULL とは異なり、データベースの専門用語では、NULL は "値を持たない" ことを意味します。)追加操作を完了するには Update メンバ関数を呼び出します。Update は、データ ソースに変更内容を保存します。

ea0axwt0.alert_caution(ja-jp,VS.90).gif注意 :

レコードを編集し、Update を呼び出さずに他のレコードにスクロールすると、その変更は失われ、警告もされません。

AddNew を呼び出して、ダイナセット タイプのレコードセットにレコードを追加すると、レコードはレコードセットで参照できるようになり、基になるテーブルに追加され、新しい CDaoRecordset オブジェクトでも参照できるようになります。

新しいレコードの位置は、レコードセットの型に依存します。

  • ダイナセット タイプのレコードセットでは、新しいレコードの挿入位置が保証されません。Microsoft Jet 3.0 では、パフォーマンスと並列処理を考慮して、この動作が変更されています。新しく追加したレコードを現在のレコードにするには、最後に変更したレコードのブックマークを取得し、このブックマーク位置に移動します。

    rs.SetBookmark(rs.GetLastModifiedBookmark());
    
  • インデックスが指定されているテーブル タイプのレコードセットでは、レコードは並べ替え順序で適切な位置に挿入されます。インデックスが指定されていないときは、新しいレコードは、レコードセットの最後に追加されます。

AddNew が呼び出される前に現在のレコードだったレコードは、現在のレコードのままです。新しいレコードを現在のレコードとするとき、およびレコードセットがブックマークをサポートしているときは、基になる DAO レコードセット オブジェクトの LastModified プロパティの設定で示されるブックマークに対して、SetBookmark を呼び出します。この関数を呼び出すことは、追加されたレコードの中のカウンタ (自動インクリメント) フィールドの値を調べるのに有用です。詳細については、「CDaoRecordset::GetLastModifiedBookmark」を参照してください。

データベースがトランザクションをサポートしていると、トランザクションの一部として AddNew を呼び出すことができます。ドランザクションの詳細については、「CDaoWorkspace クラス」クラスを参照してください。AddNew を呼び出す前に、CDaoWorkspace::BeginTrans を呼び出します。

Open メンバ関数を呼び出していないレコードセットに対して、AddNew を呼び出すことは不正です。追加できないレコードセットに対して AddNew を呼び出すと、CDaoException がスローされます。CanAppend を呼び出して、レコードセットが更新できるかどうかを調べることができます。

フレームワークは変更されたフィールド データ メンバをマークし、DAO レコード フィールド エクスチェンジ (DFX) 機構がデータ ソースのレコードに書き込むようにします。フィールドの値を変更すると、通常、そのフィールドは自動的にダーティに設定されます。したがって、SetFieldDirty を手動で呼び出す必要はほとんどありません。ただし、フィールド データ メンバの値にかかわらず、列を明示的に更新または挿入する必要がある場合は、この関数を使用します。DFX 機構では PSEUDONULL も使用できます。詳細については、「CDaoFieldExchange::m_nOperation」を参照してください。

ダブル バッファリング機構が使用されていない場合、フィールドの値が変更されても、自動的にダーティとして設定されません。この場合、明示的にそのフィールドをダーティに設定する必要があります。フィールドの自動チェックは、m_bCheckCacheForDirtyFields が保持するフラグによって制御されます。

ea0axwt0.alert_note(ja-jp,VS.90).gifメモ :

レコードがダブルバッファ化されていると (つまり、自動フィールド チェックが有効であると)、CancelUpdate の呼び出しは、メンバ変数を AddNew または Edit が呼び出される前の値に戻します。

関連情報については、DAO ヘルプの「AddNew Method」、「CancelUpdate Method」、「LastModified Property」、および「EditMode Property」を参照してください。

必要条件

ヘッダー : afxdao.h

参照

参照

CDaoRecordset クラス

階層図

CDaoRecordset::CanUpdate

CDaoRecordset::CancelUpdate

CDaoRecordset::Delete

CDaoRecordset::Edit

CDaoRecordset::Update

CDaoRecordset::CanTransact

その他の技術情報

CDaoRecordset のメンバ