gpt4 book ai didi

vba - 如何在MS Access VBA中将附加查询作为事务的一部分运行

转载 作者:行者123 更新时间:2023-12-03 07:43:13 25 4
gpt4 key购买 nike

我对编程非常陌生,并且一直在MS Access 2016上构建公司的 list 数据库。到目前为止,我对宏的了解还不错,但是我正在尝试运行由添加和删除查询组成的事务并在vba代码中苦苦挣扎。

我想出了如何在查询失败的情况下运行事务。但是,我要包括在事务中的追加查询是从空白表格中绘制值,据我所知,这意味着我需要在代码中定义查询参数。

因此,这是事务和错误处理起作用的代码:

Private Sub Command0_Click()

Dim ws As DAO.Workspace, db As DAO.Database
Set ws = DBEngine.Workspaces(0)
Set db = ws.Databases(0)
Set qdf = db.QueryDefs

On Error GoTo ErrTrap

ws.BeginTrans
DoCmd.SetWarnings False
db.Execute "TESTQRY1", dbFailOnError
db.Execute "TEST2QRY", dbFailOnError
db.Execute "TESTQRY3", dbFailOnError

ws.CommitTrans

MsgBox ("You have successfully updated the data")
DoCmd.SetWarnings True

Exit Sub

ErrTrap:
ws.Rollback
MsgBox "Rollback needed because:" & vbCr & Err.Description

End Sub

这是可用于实际运行查询的代码,但没有错误处理或事务正常运行:
Private Sub Add_Click()

Dim db As DAO.Database
Dim qry As DAO.QueryDef
Dim ws As DAO.Workspace

Set ws = DBEngine.Workspaces(0)
Set db = ws.Databases(0)
Set qry = db.QueryDefs("APPENDQRY")

qry.Parameters(0) = Forms!LotNumberFrm!txtLotNumber
qry.Parameters(1) = Forms!LotNumberFrm!txtFWNumber
qry.Parameters(2) = Forms!LotNumberFrm!txtExpDate
qry.Parameters(3) = Forms!LotNumberFrm!chkActive

qry.Execute

Exit Sub

End Sub

所以基本上我的问题是我需要同时做这两个事情-使用错误处理将查询作为事务的一部分运行,并在代码中定义查询参数。

我试图将这两段代码 slice 并拼接在一起,但是没有成功。任何帮助将非常感激。

最佳答案

我真的不明白为什么您无法将第一部分中的代码集成到第二个问题中,但是我会为您完成。

Private Sub Add_Click()
Dim db As DAO.Database
Dim qry As DAO.QueryDef
Dim ws As DAO.Workspace
Set ws = DBEngine.Workspaces(0)
Set db = ws.Databases(0)
Set qry = db.QueryDefs("APPENDQRY")

qry.Parameters(0) = Forms!LotNumberFrm!txtLotNumber
qry.Parameters(1) = Forms!LotNumberFrm!txtFWNumber
qry.Parameters(2) = Forms!LotNumberFrm!txtExpDate
qry.Parameters(3) = Forms!LotNumberFrm!chkActive

On Error GoTo ErrTrap
ws.BeginTrans
qry.Execute
ws.CommitTrans
Exit Sub
ErrTrap:
ws.Rollback
MsgBox "Rollback needed because:" & vbCr & Err.Description
End Sub

通过事务执行单个查询的另一种方法是:
qry.Execute dbFailOnError

这将在错误时回滚查询。不需要任何工作空间的东西。

关于vba - 如何在MS Access VBA中将附加查询作为事务的一部分运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46851505/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com