m_pRecordset->Delete(adAffectCurrent); 中的 adAffectCurrent 表示「僅刪除當前記錄指針所指向的那一條記錄」。
enum AffectEnum {
adAffectCurrent = 1, // 當前記錄 (默認)
adAffectGroup = 2, // 滿足 Filter 過濾條件的記錄組
adAffectAll = 3, // 所有記錄 (含隱藏/過濾)
adAffectAllChapters = 4 // 所有章節 (分層記錄集)
};
UpdateBatch 前仍可撤銷 (CancelUpdate/RollbackTrans)。adLockOptimistic/adLockPessimistic):立即發送 DELETE SQL 到數據庫。adLockBatchOptimistic):本地標記刪除,需調用 UpdateBatch(adAffectCurrent) 提交。try {
// 定位到要刪除的記錄 (如通過 Find、Move、Bookmark)
m_pRecordset->Find("ID = 100");
if (!m_pRecordset->adoEOF) {
// 確認刪除 (可選)
if (AfxMessageBox(_T("確定刪除?"), MB_YESNO) == IDYES) {
m_pRecordset->Delete(adAffectCurrent); // 刪除當前記錄
// 即時模式下已提交數據庫
}
}
} catch (_com_error& e) {
// 錯誤處理
dump_com_error(e);
}
| 參數 | 效果 | 典型場景 |
|---|---|---|
adAffectCurrent | 刪除**當前**一條記錄 | 用戶選中列表某行點「刪除」 |
adAffectGroup | 刪除**滿足 Filter** 的所有記錄 | 批量刪除「狀態=失效」的記錄 |
adAffectAll | 刪除**記錄集內所有**記錄 (忽略 Filter) | 清空臨時表、重置數據 |
adoEOF/BOF**,避免後續操作訪問無效記錄。Delete(adAffectCurrent) + UpdateBatch(adAffectCurrent)。adAffectCurrent = 僅影響當前記錄。 它是 Delete、UpdateBatch、CancelBatch 等方法的標準參數,明確限定操作範圍為「游標當前指向的單條記錄」,是最常用、最安全的默認選項。