次の方法で共有


CRecordset::Edit

 

割り当てが現在のレコードに変更します。

構文

virtual void Edit( );

解説

**[編集]**を呼び出した後、直接これらの値を再設定することで、フィールド データ メンバーを変更できます。 操作は、データ ソースに変更を保存するに従って 更新 のメンバー関数を呼び出すと完了します。

注意

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

[編集] は、レコードセット データ メンバーの値を保存します。 [編集]を呼び出す場合は、前に [編集] の最初の呼び出しの設定に変更を加え、[編集] を、レコードの値に復元されます再度呼び出します。

場合によっては、無効にするには、を作成して列を更新する場合、(データは含まれていません)。 そのためには、フィールドの Null をマークするように [真] のパラメーターの SetFieldNull を呼び出します。; これは、列を更新します。 値が変更されていない場合でもフィールドにデータ ソースに書き込まれる場合は、**[真]**のパラメーターの SetFieldDirty を呼び出します。 つまり、このフィールドの値に NULL がある場合でも機能します。

データ ソースがトランザクションをサポートしている場合、トランザクションの [編集] の呼び出しのパーツを作成できます。 呼び出す必要があることと、レコードセットが開いていることを [編集] を呼び出す前にを CDatabase::BeginTrans 後に注意してください。 また CDatabase::CommitTrans を呼び出すと、とは限りません 更新[編集] 操作を完了するために呼び出すに代わる注意してください。 トランザクションに関する詳細については、クラス CDatabaseを参照してください。

現在のロック モードによっては、更新されるレコードは [編集] によって別のレコードにスクロール 更新 を呼び出すか、または [編集] の呼び出し時にのみロックされる可能性があるまでロックされているか。 SetLockingModeのロック モードを変更できます。

現在のレコードの前の値は新しいレコードに 更新を呼び出す前にスクロールすると復元されます。 CDBException が更新できない場合は、現在のレコードが存在レコードセットの [編集] を呼び出すとスローされます。

詳細については、" " トランザクション (ODBC)レコードセット: レコード ロックします (ODBC) をを参照してください。

例外

Exception

Condition

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

使用例

// To edit a record, first set up the edit buffer
rsCustSet.Edit();

// Then edit field data members for the record
rsCustSet.m_BillingID = 2795;
rsCustSet.m_ContactFirstName = _T("Jones Mfg");

// Finally, complete the operation
if(!rsCustSet.Update())
{
    // Handle the failure to update
    AfxMessageBox(_T("Couldn't update record!"));
}

必要条件

Header: afxdb.h

参照

CRecordset クラス
階層図
CRecordset::Update
CRecordset::AddNew
CRecordset::Delete
CRecordset::SetFieldDirty
CRecordset::SetFieldNull
CRecordset::CanUpdate
CRecordset::CanTransact
CRecordset::SetLockingMode