CRecordset::Edit
允許存取目前資料錄的變更。
virtual void Edit( );
備註
在呼叫 編輯之後,您可以立即重設其值變更的欄位資料成員。當您在資料來源時,後續的呼叫 更新 成員函式儲存變更作業完成。
注意事項 |
---|
如果您已實作大量資料列擷取,就無法呼叫 編輯。這樣會造成失敗的判斷提示。雖然類別 CRecordset 為更新大量資料列不提供一種機制,使用 ODBC API 函式 SQLSetPos,您可以撰寫自己的函式。如需大量資料列擷取的詳細資訊,請參閱本文 資料錄集:擷取大量資料錄 (ODBC)。 |
編輯 儲存資料錄集的資料成員的值。如果您呼叫 編輯,進行變更,然後再呼叫 編輯 ,資料錄的值將還原為本來就是,在第一個 編輯 呼叫之前。
在某些情況下,您可能需要即可更新資料行空間 (包含資料)。若要這麼做,請呼叫 是 參數的 SetFieldNull 標示欄位,則為 null。這也會導致這個資料行的更新。如果您要讓欄位提供資料來源所撰寫,即使它的值沒有變更,請呼叫 是參數的 SetFieldDirty 。這個方式,即使欄位的值為 null。
如果資料來源支援交易,您可以 編輯 呼叫部分交易。請注意您應該在呼叫之前呼叫 編輯CDatabase::BeginTrans ,並在連接開啟之後,資料錄集。同時也請注意呼叫的 CDatabase::CommitTrans 這並不是呼叫 更新 的替代項目 編輯 完成作業。如需交易的詳細資訊,請參閱類別 CDatabase。
根據目前鎖定模式,更新的資料錄可能由 編輯 鎖定,直到您呼叫 更新 或捲動至其他的資料錄,在 編輯 呼叫期間,或者它可能只鎖定。您可以變更與 SetLockingMode的鎖定模式。
目前資料錄的還原先前的值,如果您捲動至一筆新資料錄在呼叫 更新之前。CDBException 擲回,如果您呼叫無法更新的資料錄集的 編輯 ,或者沒有目前資料錄。
如需詳細資訊,請參閱 Microsoft 知識庫文件 交易 (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!"));
}
需求
Header: afxdb.h