【发布时间】:2014-05-06 19:16:47
【问题描述】:
我正在尝试从 SQL Server 数据库中的一系列表中收集特定数据,并使用 VBA 将它们组合到 Access 中的单个表中。
我使用一个查询在 Access 中创建了一个记录集,该查询使用多个 UNION ALL 语句组合了所有数据。我最初的方法是使用以下内容遍历记录集:
Dim cnn As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim SQL As String
cnn.Open "Driver={SQL Server};Server=" + SQLServerNameStr + ";Database=" + DBNameStr + ";Trusted_Connection=Yes"
SQL = "SELECT A, B, C FROM TableA UNION ALL SELECT D, E, F FROM TableB UNION ALL ..." // etc., etc., etc.
rs.Open SQL, cnn, adOpenForwardOnly
While Not rs.EOF
CurrentDB().Execute ("INSERT INTO AccessTable VALUES ('" & rs("FieldA") & "', '" & rs("FieldB") & "', '" & rs("FieldC") &"')")
rs.MoveNext
Wend
这一切都有效,但是,对于大约 20,000 条记录,它的速度非常慢。我确信有更好的方法......可能通过将 INSERT 构建到主查询中,但是,当数据源连接到 SQL Server 和当前的目标时,我无法理解如何执行此操作数据库。
任何建议将不胜感激。
【问题讨论】:
-
您的执行语句的 VBA 代码不正确,它是如何运行的?
-
我试图简化......我并没有实际剪切和粘贴我的代码......我只是看看在没有编辑器更正我的语法的情况下尝试编码时犯了多少错误! !! ;)
-
我已编辑问题以更正语法。
标签: sql sql-server vba ms-access-2010