次の方法で共有


CRecordset::Edit

現在のレコードを変更する準備をします。

virtual void Edit( );

解説

Edit を呼び出した後では、値を直接再設定することよってフィールド データ メンバーを変更できます。 変更をデータ ソースに保存するために Update メンバー関数を呼び出すことで操作が完了します。

注意

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

Edit は、レコードセットのデータ メンバーの値を保存します。 Edit を呼び出し、変更して再度 Edit を呼び出すと、レコードの値は最初の Edit の呼び出しの前の値に戻ります。

列を Null (データを持たない状態) にすることによって更新する場合もあります。 そのためには、フィールドを Null としてマークするため、パラメーターに TRUE を渡して SetFieldNull を呼び出します。これは、列の更新も行います。 フィールドの値を変更していなくてもフィールドの値をデータ ソースに書き込みたいときは、パラメーターに TRUE を渡して SetFieldDirty 関数を呼び出します。 この処理は、フィールドの値が Null の場合でも機能します。

データ ソースでトランザクションがサポートされている場合は、トランザクションの一部として Edit を呼び出すことができます。 トランザクションでは、レコードセットを開いて Edit 関数を呼び出す前に CDatabase::BeginTrans を呼び出す必要があることに注意してください。 また、CDatabase::CommitTrans 呼び出しは Edit 操作を完了させるための Update 関数の呼び出しの代わりにはならないことに注意してください。 トランザクションの詳細については、「CDatabase クラス」クラスを参照してください。

現在のロック モードによって、レコードの更新がロックされる方法が決まります。モードによって、Update 関数を呼び出すか、ほかのレコードにスクロールするまで Edit 関数によってロックされたり、あるいは、Edit 関数を呼び出す間だけロックされたりします。 SetLockingMode を使ってロック モードを変更できます。

Update を呼び出す前に新しいレコードにスクロールすると現在のレコードの値は以前の値に戻ります。 更新できないレコードセットに対して Edit 関数を呼び出したり、現在のレコードがないときに Edit 関数を呼び出すと CDBException がスローされます。

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

例外

このメソッドは、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!"));
}

必要条件

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

参照

参照

CRecordset クラス

階層図

CRecordset::Update

CRecordset::AddNew

CRecordset::Delete

CRecordset::SetFieldDirty

CRecordset::SetFieldNull

CRecordset::CanUpdate

CRecordset::CanTransact

CRecordset::SetLockingMode

その他の技術情報

CRecordset のメンバー