VB5 與資料庫程式設計

補充教材


呼叫 Recordset.Delete 之後,有反悔的機會嗎?(98/01/09 補充說明)

參閱章節:第17章-第 4 招,p.531。
基本上, 呼叫 Recordset.Delete 之後, 資料錄會立刻從資料庫中除去, 但請參考 p.531 的 BeginTrans 及 CommitTrans, 其中:
    BeginTrans 是將所有更新資料庫的動作先寫到記憶體中。(這表示被刪除的資料錄還沒有從資料庫檔案中除去)
    CommitTrans 真正將記憶體中資料變動的情形寫到資料庫檔案中。

除了以上兩個方法之外, 另一個方法 RollBack(書中未介紹) 的作用則是「取消記憶體中的資料變動」。


有了以上幾個方法之後, 我們可以利用以下程式決定 Delete 是否真正地刪除資料錄:

    ' rs 為一 Recordset 物件
    DBEngine.BeginTrans
    rs.Delete  ' 由於之前呼叫了 Begins, 所以此一 Delete 尚未真正刪除資料錄
    If ... Then ' 真正刪除資料錄的條件成立時
        DBEngine.CommitTrans ' 將變動真正到寫到資料庫檔案中
    Else
        DBEngine.RollBack ' 取消所有的變動
    End If