使用事务的 DAO 记录集批量更新(excel)
Posted
技术标签:
【中文标题】使用事务的 DAO 记录集批量更新(excel)【英文标题】:DAO Recordset mass update using transactions(excel) 【发布时间】:2019-01-06 12:41:27 【问题描述】:我正在尝试将使用 VBA 在 Excel 表单中启动的 DAO 事务中的批量记录导出到 Access 表中,但是当我在下面的代码上点击提交时,没有任何内容导出,它必须关闭,但我不明白为什么我的交易是空的?如果我将 ws.committrans 移动到与开始事务相同的按钮单击事件,一切正常,但这是一次更新,我想使用事务一次更新多条记录。
Public db As DAO.Database
Public rs As DAO.Recordset
Public ws As DAO.Workspace
Public Sub CommandButton1_Click()
Dim val1 As String
Dim val2 As String
Dim val3 As String
Dim val4 As String
Dim val5 As String
Dim val6 As String
Set ws = DBEngine(0)
Set db = ws.OpenDatabase("Database8")
Set rs = db.OpenRecordset("test")
val1 = Me.TextBox1.Value
val2 = Me.TextBox2.Value
val3 = Me.TextBox3.Value
val4 = Me.TextBox4.Value
val5 = Me.TextBox5.Value
val6 = Me.TextBox6.Value
ws.BeginTrans
With rs
.AddNew
!col1 = val1
!col2 = val2
!col3 = val3
!col4 = val4
!col5 = val5
!col6 = val6
.Update
End With
Me.TextBox1.Value = ""
Me.TextBox2.Value = ""
Me.TextBox3.Value = ""
Me.TextBox4.Value = ""
Me.TextBox5.Value = ""
Me.TextBox6.Value = ""
End Sub
Private Sub CommandButton2_Click()
ws.CommitTrans
End Sub
【问题讨论】:
你能在End With
行之前写.Execute
吗? (这里只是猜测)-msdn.microsoft.com/en-us/library/office/ff197654.aspx
【参考方案1】:
更改了代码以在用户表单激活时启动事务,并在单击提交按钮时完成事务现在像梦一样工作。
【讨论】:
我遇到的其他问题是将事务提交绑定到工作簿保存事件而不是表单按钮单击事件。通过将代码移出表单本身并创建一个带有可调用函数的模块,我能够实现它以上是关于使用事务的 DAO 记录集批量更新(excel)的主要内容,如果未能解决你的问题,请参考以下文章