CRecordset::AddNew
テーブルに新しいレコードを追加するための準備。
virtual void AddNew( );
解説
新しく追加されたレコードを表示するに [再クエリ] のメンバー関数を呼び出す必要があります。レコードのフィールドは、最初に null です。(データベースの用語で、Null 値は「値」ことを意味します null C++ のと同じになります)。操作を完了するには、更新 のメンバー関数を呼び出す必要があります。更新 は、データ ソースへの変更を保存します。
[!メモ]
バルク行フェッチを実装している AddNewを呼び出すことはできません。これはアサーション エラーが発生します。クラス CRecordset が複数行のデータを更新する機構はありませんが、ODBC API 関数 SQLSetPosを使用して独自の関数を記述できます。バルク行フェッチに関する詳細については、" " レコードセット: フェッチ サイズのレコードを (ODBC)を参照してください。
AddNew、レコードセットのフィールド データ メンバーを使用して、新しい空のレコードを準備します。AddNewを呼び出した後、レコードセットのフィールド データ メンバーに必要な値を設定します。( [編集] のメンバー関数をこのように呼び出す必要はありません; 既存レコードに対してのみ [編集] を使用します)。その後 更新を呼び出すと、フィールド データ メンバーの変更された値は、データ ソースに保存されます。
注意 |
---|
更新を呼び出す前に新しいレコードにスクロールすると、新規レコードは失われ、警告は表示されません。 |
データ ソースがトランザクションをサポートしている場合、トランザクションの AddNew の呼び出しのパーツを作成できます。トランザクションに関する詳細については、クラス CDatabaseを参照してください。AddNewを呼び出す前に CDatabase::BeginTrans を呼び出す必要があることに注意してください。
[!メモ]
ダイナセットでは、新規レコードは、最後のレコードとしてレコードセットに追加されます。追加したレコードはスナップショットに追加されません; レコードセットを更新するに [再クエリ] を呼び出す必要があります。
[開く] のメンバー関数は、が呼び出されていないレコードセットの AddNew を呼び出すことはできません。CDBException は追加できないレコードセットの AddNew を呼び出すとスローされます。レコードセットが CanAppendの呼び出しによって更新可能かどうかを確認できます。
詳細については、次のトピックを参照: レコードセット: レコードセットが更新のしくみ (ODBC) を、レコードセット: 追加、更新、および削除 (ODBC) をと トランザクション (ODBC)。
例外
このメソッドは、型 **CDBException***の例外をスローできます。
使用例
トランザクション: レコードセット (ODBC) でトランザクションを実行します。" "を参照してください。
必要条件
Header: afxdb.h