次の方法で共有


CRecordset::AddNew

テーブルに新しいレコードを追加するための準備。

virtual void AddNew( );

解説

新しく追加されたレコードを表示するに [再クエリ] のメンバー関数を呼び出す必要があります。レコードのフィールドは、最初に null です。(データベースの用語で、Null 値は「値」ことを意味します null C++ のと同じになります)。操作を完了するには、更新 のメンバー関数を呼び出す必要があります。更新 は、データ ソースへの変更を保存します。

[!メモ]

バルク行フェッチを実装している AddNewを呼び出すことはできません。これはアサーション エラーが発生します。クラス CRecordset が複数行のデータを更新する機構はありませんが、ODBC API 関数 SQLSetPosを使用して独自の関数を記述できます。バルク行フェッチに関する詳細については、" " レコードセット: フェッチ サイズのレコードを (ODBC)を参照してください。

AddNew、レコードセットのフィールド データ メンバーを使用して、新しい空のレコードを準備します。AddNewを呼び出した後、レコードセットのフィールド データ メンバーに必要な値を設定します。( [編集] のメンバー関数をこのように呼び出す必要はありません; 既存レコードに対してのみ [編集] を使用します)。その後 更新を呼び出すと、フィールド データ メンバーの変更された値は、データ ソースに保存されます。

Caution メモ注意

更新を呼び出す前に新しいレコードにスクロールすると、新規レコードは失われ、警告は表示されません。

データ ソースがトランザクションをサポートしている場合、トランザクションの AddNew の呼び出しのパーツを作成できます。トランザクションに関する詳細については、クラス CDatabaseを参照してください。AddNewを呼び出す前に CDatabase::BeginTrans を呼び出す必要があることに注意してください。

[!メモ]

ダイナセットでは、新規レコードは、最後のレコードとしてレコードセットに追加されます。追加したレコードはスナップショットに追加されません; レコードセットを更新するに [再クエリ] を呼び出す必要があります。

[開く] のメンバー関数は、が呼び出されていないレコードセットの AddNew を呼び出すことはできません。CDBException は追加できないレコードセットの AddNew を呼び出すとスローされます。レコードセットが CanAppendの呼び出しによって更新可能かどうかを確認できます。

詳細については、次のトピックを参照: レコードセット: レコードセットが更新のしくみ (ODBC) をレコードセット: 追加、更新、および削除 (ODBC) をトランザクション (ODBC)

例外

このメソッドは、型 **CDBException***の例外をスローできます。

使用例

トランザクション: レコードセット (ODBC) でトランザクションを実行します。" "を参照してください。

必要条件

Header: afxdb.h

参照

関連項目

CRecordset クラス

階層図

CRecordset::Edit

CRecordset::Delete

CRecordset::Update

CRecordset::Requery

CDatabase::BeginTrans

CDBException クラス