次の方法で共有


CDaoRecordset::AddNew

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

virtual void AddNew( );

解説

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

ヒント

レコードを編集し、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 機構では PSEUDO NULL も使用できます。 詳細については、「CDaoFieldExchange::m_nOperation」を参照してください。

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

注意

レコードがダブルバッファー化されていると (つまり、自動フィールド チェックが有効であると)、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 のメンバー