CDaoRecordset::Edit
呼叫此成員函式允許存取目前資料錄的變更。
virtual void Edit( );
備註
當您呼叫 編輯 成員函式,進行的變更目前資料錄的欄位複製到緩衝區複本。 在您對資料錄之後所需的內容時,會呼叫儲存變更的 更新 。 編輯 儲存資料錄集的資料成員的值。 如果您呼叫 編輯,進行變更,然後再呼叫 編輯 ,資料錄的值將還原為本來就是,在第一個 編輯 呼叫之前。
警告
如果您編輯資料錄然後執行移動至另一個資料錄,而不用先呼叫的 更新的任何作業,您的變更將會遺失,而不需警告。此外,因此,如果您關閉資料錄集或父資料表,您的編輯的資料錄會被捨棄,而不需警告。
在某些情況下,您可能需要即可更新資料行空間 (包含資料)。 若要這麼做,請呼叫 是 參數的 SetFieldNull 標示欄位,則為 null。這也會導致這個資料行的更新。 如果您要讓欄位提供資料來源所撰寫,即使它的值沒有變更,請呼叫 是參數的 SetFieldDirty 。 這個方式,即使欄位的值為 null。
確保他們的框架標記已變更的欄位資料成員至資料錄中寫入資料來源是由 DAO 資料錄欄位交換 (DFX) 機制。 變更值會自動] 欄位通常成員設定記錄變更的欄位,因此,您很少需要呼叫 SetFieldDirty ,不過,您可能會想要確保資料行會明確更新或插入的值為何在欄位資料成員。 DFX 機制也使用 PSEUDO NULL。 如需詳細資訊,請參閱 CDaoFieldExchange::m_nOperation。
如果未使用雙重緩衝機制,則會變更欄位的值不會自動設定欄位標記為已變更。 在這個案例中,明確設定記錄變更的欄位會是必要的。 在 m_bCheckCacheForDirtyFields 包含的旗標會控制這個自動欄位檢查。
當資料錄集物件在多使用者環境中消極地鎖定,記錄保持鎖定從時間 編輯 使用,等到更新完成時呼叫。 如果資料錄集開放式鎖定,該資料錄鎖定和具有預先編譯的資料錄加以比較,以便在資料庫之前更新。 如果記錄已經變更,則呼叫 編輯, 更新 作業會失敗,而 MFC 會擲回例外狀況。 您可以變更與 SetLockingMode的鎖定模式。
注意事項 |
---|
開放式鎖定在外部資料庫格式一律使用,例如 ODBC 和可安裝的 ISAM。 |
在呼叫之後, 編輯目前資料錄保持最新。 呼叫 編輯,必須有一個目前記錄。 如果沒有目前資料錄,或如果資料錄集並未參考開啟資料表型別或動態集類型的資料錄集物件,則會擲回例外狀況 (Exception)。 呼叫 編輯 造成 CDaoException 在下列情況下會擲回:
沒有目前資料錄。
資料庫或資料錄集是唯讀的。
資料錄的欄位不可更新。
資料庫或開啟資料錄集為獨佔使用由另一位使用者。
其他使用者鎖定包含您的資料錄的網頁。
如果資料來源支援交易,您可以 編輯 呼叫部分交易。 請注意您應該在呼叫之前呼叫 編輯CDaoWorkspace::BeginTrans ,並在連接開啟之後,資料錄集。 同時也請注意呼叫的 CDaoWorkspace::CommitTrans 這並不是呼叫 更新 的替代項目 編輯 完成作業。 如需交易的詳細資訊,請參閱類別 CDaoWorkspace。
如需相關資訊,請參閱主題「AddNew 方法」,編輯方法」,刪除方法」, 「更新」和「方法可更新的屬性」DAO 說明。
需求
Header: afxdao.h