vba批量写入mysql临时表_提高从VBA字典向Access DB中插入多个数据的速度

我正在尝试使用VBA字典,并且:

如果数据库不存在,则将新行插入数据库

如果行更新,则更新该行

虽然我目前的代码可以做到这一点,但对于我可能需要更新的数千条记录,它运行得非常缓慢,而且我在这个站点上找到的其他解决方案并不能真正实现我想要的。有人能帮我做到这一点吗?我的代码如下:

Sub UpdateDatabase(dict As Object)

Dim Conn As Object, StrSQL As String, Rs As Object

Dim hmm As ADODB.Recordset

Set Conn = CreateObject("ADODB.Connection")

Conn.Provider = "Microsoft.ACE.OLEDB.12.0"

Conn.Open "C:\XXXX\cfrv2.accdb"

dictCount = dict.Count

counter = 0

For Each varKey In dict.Keys()

Application.StatusBar = Str(counter) & "/" & Str(dictCount)

counter = counter + 1

StrSQL = "SELECT * FROM `All SAMs Backlog` WHERE [LOCID] = '" & varKey & "'"

Set hmm = Conn.Execute(StrSQL)

If hmm.BOF And hmm.EOF Then

StrSQL = "INSERT INTO `ALL SAMs Backlog` ([SAM], [LOCID], [RTC Date], [CFR Status], [CFR Completed Date], [CFR On Hold Reason], [MDU], [ICWB Issue], [Obsolete]) VALUES (dict.Item(varKey)(0), '" & varKey & "', '20/12/2018', '" & dict.Item(varKey)(1) & "', '02/01/2019', '" & dict.Item(varKey)(2) & "' , '" & dict.Item(varKey)(3) & "' , '" &dict.Item(varKey)(4) & "' , '" & dict.Item(varKey)(5) & "')"

Conn.Execute (StrSQL)

Else

'Update the LOC in the table

StrSQL = "UPDATE `All SAMs Backlog` SET ([CFR Status] = '" & dict.Item(varKey)(1) & "', [CFR On Hold Reason] = '" & dict.Item(varKey)(2) & "', [MDU] = '" & dict.Item(varKey)(3) & "', [ICWB Issue] = '" & dict.Item(varKey)(4) & "', [Obsolete] = '" & dict.Item(varKey)(5) & "')"

Conn.Execute (StrSQL)

End If

Next

Conn.Close

End Sub

感谢您的帮助。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值