請問各位先進:
如標題,要如何才能得知connection是否正在處於交易中(cn.BeginTrans)呢?
因為小弟有設定on error goto的指令,但有時錯誤並非是發生在交易過程,若cn.RollbackTrans反而為發生第二次錯誤???
例如:
Private Sub AA()
on error goto MyErr:
cn.BeginTrans
    :
    :
  cn.CommitTrans
    :
    :   <--假設錯誤發生於此
  exit sub
MyErr:
'是否可以在此判斷,是否有作用中的交易呢????
  cn.RollbackTrans <--發生第二次錯誤:[正在作用中的異動。]
end Sub
創作者介紹
創作者 vbqa 的頭像
vbqa

小吳 VBQA 程式設計討論

vbqa 發表在 痞客邦 留言(3) 人氣()


留言列表 (3)

發表留言
  • MelWu
  • 抱歉,倒數第二行打錯了,更正為:
    cn.RollbackTrans <--發生第二次錯誤:[無正在作用中的異動。]
  • 阿利
  • 以下是我的回答 ...:p
    還有關 SQL Server 或 Crystal Report 的問題或是其他資料庫的問題.
    歡迎到新開版的 http://cu29.sytes.net 討論園區中發表.
    如果我會一定會很快的回答您.. : )

    Dim adodc As New ADODB.Connection
    Dim rectmp As New Recordset
    Private Sub Command1_Click()
    adodc.BeginTrans
    rectmp.Open "select @@TRANCOUNT", adodc,1,1
    '此時尚未執行任何異動,故rectmp.fields(0)=0
    '執行異動
    adodc.Execute "update timesheet set log_date=log_date"
    rectmp.Close
    rectmp.Open "select @@TRANCOUNT", adodc, adOpenForwardOnly,
    '第一個異動開始後 rectmp.fields(0)=1
    adodc.Execute "update timesheet set log_date=log_date"
    rectmp.Close
    rectmp.Open "select @@TRANCOUNT", adodc, 1,1
    '第一個異動開始後 rectmp.fields(0) 皆為 1
    '交異完成
    adodc.CommitTrans
    rectmp.Close
    rectmp.Open "select @@TRANCOUNT", adodc, 1,1
    '經過 Commit 或是 Rollback 後 rectmp.fields(0)=0
    End sub
  • MelWu
  • 謝謝阿利前輩的解惑,用您的方式就解決了我的問題了,再次感謝!