次の方法で共有


CRecordset::AddNew

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

virtual void AddNew( );

解説

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

注意

バルク行フェッチを実装した場合、AddNew は呼び出すことができません。 呼び出すと、アサートします。 CRecordset クラスはデータのバルク行を更新する機構を持っていませんが、ODBC API 関数の SQLSetPos を使用することによって独自の関数を作成できます。 バルク行フェッチの詳細については、資料を参照してくださいレコード セット:一括 (ODBC) 内のレコードをフェッチ

AddNew 関数はレコードセットのフィールド データ メンバーを使って新しい空のレコードを準備します。 AddNew 関数を呼び出した後で必要なレコードセットのフィールド データ メンバーに値を設定します。 このとき Edit メンバー関数を呼び出す必要はありません。Edit 関数は既に存在するレコードに対してだけ使います。その後 Update 関数を呼び出すと、フィールド データ メンバーの変更された値がデータ ソースに保存されます。

ヒント

Update 関数を呼び出す前に新しいレコードにスクロールすると、新しいレコードは警告なしに失われます。

データ ソースがトランザクションをサポートしていれば、AddNew 関数の呼び出しをトランザクションの一部に含めることができます。 トランザクションの詳細については、「CDatabase クラス」クラスを参照してください。 トランザクションでは、AddNew 関数の呼び出しの前に、CDatabase::BeginTrans を呼び出す必要があることに注意してください。

注意

ダイナセットでは、新しいレコードは最終レコードとしてレコードセットに追加されます。 追加レコードはスナップショットには追加されません。レコードセットを再表示するには Requery 関数を呼び出します。

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

詳細については、次の資料を参照してください。レコード セット:レコード セット (ODBC) のレコードを更新する方法レコード セット:追加、更新、および削除 (Odbc)、および トランザクション (ODBC)

例外

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

使用例

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

必要条件

**ヘッダー:**afxdb.h

参照

参照

CRecordset クラス

階層図

CRecordset::Edit

CRecordset::Delete

CRecordset::Update

CRecordset::Requery

CDatabase::BeginTrans

CDBException クラス

その他の技術情報

CRecordset のメンバー