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

ook

我对编程非常陌生,并且一直在MS Access 2016上构建公司的清单数据库。到目前为止,我对宏的了解还不错,但是我正在尝试运行由添加和删除查询组成的事务并在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

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

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

埃里克·A

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

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

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何将Webpack编译作为CircleCI配置的一部分运行

如何将外部DAG作为我的DAG的一部分运行?

作为全局扩展一部分运行的命令(即grep)如何知道?

如何让任务作为 ECS 服务的一部分运行?

使用ComboBox值作为SQL查询的一部分吗?(MS Access 2010-2013)

MS-Access:您的查询不包含指定的表达式作为聚合函数的一部分

MS-Access - 不包括 * 作为聚合函数的一部分......但它是

如何将mysql_upgrade作为docker compose文件的一部分运行?

如何在MS Access查询中获得运行总计

如何在C#中将GridView导出到MS Access

如何在 ms access 查询中显示空白字段?

如何在MS ACCESS查询中使用LIMIT

如何在MS Access中查找ADO查询的结果

MS-Access 如何在查询条件中使用 iif

作为Django Web应用程序的MS Azure应用程序服务发布管道的一部分运行迁移

如何在MS Access VBA中管理MS Excel应用程序进程

如何在Paw中将文件作为多部分请求的一部分上载?

如何在MS Access查询中将前几行的值与当前行相加?

运行时如何在XML文件中附加xml的一部分?

MS Access - 如何在一个记录集中聚合两个查询?

如何在PowerShell中将参数作为-file的一部分传递

如何在Jgit中将文件列表作为提交的一部分

如何在 Postman 中将文件作为请求参数的一部分发送

如何在SwiftUI中将View()作为列表的一部分传递?

如何在PHP中将“&”作为字符串的一部分传递?

MS-Access-您尝试执行不包含指定表达式“ Quantity”作为聚合函数一部分的方法

如何在MarkLogic中将子元素包含为单词查询的一部分

如何在子查询中使用HAVING作为Select语句的一部分

MS Access VBA 运行查询