我在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
问题内容: 我试图用Final中的值更新表Original。我是SQL的新手,但是我已经花了两个小时尝试更改各种样本以满足我的需求。我正在使用Access 2007。 问题答案: 我不确定您的陈述仅返回一行。如果要使用分配语句对表执行更新,则 必须 确保它仅返回一行。 除此之外,您可以考虑下一个解决方案: 请注意,只有当两者都是表和表中的唯一键并且它们之间具有适当的关联时,这才可以正常工作。
问题内容: 我处于必须更新数据库中约12,000个项目的情况。每行都需要镜像我之前制作的一个excel文件。我已经创建了创建SQL语句每一行的文件,但是不确定是否可以在单个查询中运行每一行。 这是我正在尝试做的一个例子。 这项工作有效吗,或者我要实现的目标还有更好的选择吗? 每个项目将具有唯一值,并且要更改的列也将具有唯一值。我看不到如何通过循环或到目前为止找到的任何其他方法来实现此目的。我意识到
问题内容: 我有2张桌子,如下所示: serial_table serial_key CHARACTER VARYING(20), PRIMARY KEY(id, serial_key) serial_rate: serial_key CHARACTER VARYING(20), rate NUMERIC, PRIMARY KEY(id, serial_key), FOREIGN KEY (id,
问题内容: 我有表SQLite数据库和列,,。行数不断变化(可能增加或减少)。如果我知道每一行的值和行数,是否可以执行一次SQL查询以根据ID更新所有具有不同值的和字段? 例如: SQL查询伪代码: 和是存储和字段的新值的数组。 如果,例如,和包含以下值: …然后查询后的数据库应如下所示: 这可能吗?我现在正在为每个查询更新一行,但是随着行数的增加,它将需要数百个查询。顺便说一下,我正在AIR中做
问题内容: 如何在SQL Server 2005中回滚UPDATE查询? 我需要在SQL中执行此操作,而不是通过代码。 问题答案: 如果您已经执行了查询并想回滚它,那么不幸的是,唯一的选择就是还原数据库备份。如果您使用的是完全备份,则应该能够将数据库还原到特定的时间点。
问题内容: 我有一个包含三列的表: 还有另一个表,其中包含2列。的列与的相同。 我需要一个查询,它将更新带有的列。 我可以通过检查ID并执行更新语句来通过循环来实现。如何才能通过查询完成? 问题答案: 怎么样