加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

回滚MS Access中的多个SQL更新查询

发布时间:2020-12-12 16:22:59 所属栏目:MsSql教程 来源:网络整理
导读:我在MS Access中的VBA中执行了多个SQL存储过程(例如UPDATE,SELECT INTO语句): CurrentDb.Execute“qry1” CurrentDb.Execute“qry2” 我想要它: *如果qry2失败,它将撤消qry1. * qry1和qry2同时执行,(因为我在链中执行了许多这些存储过程),因此程序运行得更
我在MS Access中的VBA中执行了多个SQL存储过程(例如UPDATE,SELECT INTO语句):

CurrentDb.Execute“qry1”
CurrentDb.Execute“qry2”

我想要它:
*如果qry2失败,它将撤消qry1.
* qry1和qry2同时执行,(因为我在链中执行了许多这些存储过程),因此程序运行得更快.

如何才能做到这一点?

解决方法

交易可能适合,它们允许回滚: http://msdn.microsoft.com/en-us/library/bb243155.aspx

编辑

这是DAO中的一个粗略示例:

Dim strSQL As String
Dim db As DAO.Database
Dim wrk As Workspace

On Error GoTo TrapError

    Set db = CurrentDb
    Set wrk = DBEngine.Workspaces(0)

    wrk.BeginTrans
        strSQL = "Update sysInfo Set InvoiceOR=False"
        db.Execute strSQL,dbFailOnError
    wrk.CommitTrans

Exit_Sub:
    Set db = Nothing
    Set wrk = Nothing
    Exit Sub

TrapError:

    MsgBox "Failed: " & Err.Description
    wrk.Rollback
    Err.Clear
    Resume Exit_Sub

以下是ADO的一些粗略说明:

Dim cmd As ADODB.Command
Dim cn As ADODB.Connection

Set cmd = CreateObject("ADODB.Command")
Set cn = CurrentProject.Connection

cmd.CommandText = "Update sysInfo Set InvoiceOR=False"
cmd.ActiveConnection = cn
cmd.ActiveConnection.BeginTrans
cmd.Execute,adExecuteNoRecords

If Err <> 0 Then
    cmd.ActiveConnection.RollbackTrans
Else
    cmd.ActiveConnection.CommitTrans
End If

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读