sql - Excel VBA 更新或插入具有依赖关系的现有访问表
问题描述
我想将 Excel 工作表 ( shReceiver
) 中的所有行上传到 MS Access 表 ( tblReceiver
)。
Excel 和 Access 表 ( ) 中都有一个主键 - TNR
(票号tblReceiver
)。所以首先我检查TNR
from是否shReceiver
存在于tblReceiver
. 如果是这样,那么我删除tblReceiver
. 然后我将所有数据附加shReceiver
到tblReeiver
.
但是,Access DB 中的许多查询都与 相关联tblReceiver
,这使得该过程非常缓慢(执行需要 30 分钟以上)。更新时有什么方法可以禁用其他 Access DB 查询或索引tblReceiver
?
请注意,我有大约 70k+ 条记录,其中 74 列tblReceiver
和 10k+ 数据要上传到shReceiver
.
我的代码如下:
Public Sub ExportReceiver()
Dim lastRow, var_Range_Count As Long
Dim sh As Worksheet
Set sh = ThisWorkbook.Sheets("Receiver")
lastRow = sh.Cells(Rows.Count, 2).End(xlUp).Row
Call databaseCon
For var_Range_Count = 3 To lastRow
cnn.Execute "DELETE * FROM tblReceiver WHERE tblReceiver.[TNR] =" & "'"
& sh.Range("A" & var_Range_Count).Value & "'", dbFailOnError
Next
Call CloseDB
Dim acc As New ACCESS.Application
acc.OpenCurrentDatabase ThisWorkbook.Path & "\TicketsDB.accdb"
acc.DoCmd.TransferSpreadsheet _
TransferType:=acImport, _
SpreadSheetType:=acSpreadsheetTypeExcel12Xml, _
TableName:="tblReceiver", _
FileName:=Application.ActiveWorkbook.FullName, _
HasFieldNames:=True, _
Range:="Receiver$A2:BX" & lastRow
acc.CloseCurrentDatabase
acc.Quit
Set acc = Nothing
End Sub
解决方案
推荐阅读
- elasticsearch - 在 Elasticsearch 中更改设置的最佳解决方案
- javascript - 正则表达式不允许没有前缀或后缀的特殊字符
- reactjs - 为什么 React-Scroll activeClass 不起作用?
- python - 如何删除隐藏的 utdated scipy 文件,使其不会在 VS Code OSX 中使用 python 导入
- mysql - Mysql 语句有语法问题
- quickfix - FIX 拒绝消息
- reactjs - 这个内联样式三元有什么问题
- spring - Spring MVC - 5.2.9.RELEASE 与 Mongo(spring-data-mongodb - 3.0.4.RELEASE)不工作
- python-3.x - 将文件中的单词或 URL 端点添加到由 URLS 组成的另一个文件
- mysql - 如何找到用户最大的捐赠?没有聚合函数