【发布时间】:2017-11-14 17:15:00
【问题描述】:
我正在尝试编写一个 Excel VBA 宏来运行基于电子表格中的变量的查询。现有数据一半在网络上的大型数据库(MS Access)中。
由于某种原因,当我的代码运行时,没有任何内容被粘贴回我的电子表格。你能明白为什么会这样吗:
Sub test()
Dim cnn As New ADODB.Connection
Dim rst As New ADODB.Recordset
Dim ConnectionString As String
Dim StrQuery As String
ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;DataSource=\\network\data07\version6.mdb;"
cnn.Open ConnectionString
cnn.CommandTimeout = 900
StrQuery = "SELECT dbo_vwData_SelectAll.BusinessDate, , dbo_vwData_SelectAll.Flowdate, dbo_vwData_SelectAll.Bucket FROM dbo_vwData_SelectAll WHERE (((dbo_vwData_SelectAll.Line)=""1.1.1.4"") AND ((dbo_vwData_SelectAll.ReferenceID) Like ""rent*"");"
rst.Open StrQuery, cnn
Sheets("Sheet2").Range("A2").CopyFromRecordset rst
End Sub
以上是一个测试 - 我将根据电子表格中的字符串为其他变量更改 "rent*"。
提前致谢。
【问题讨论】:
-
你设置断点看看rst里面有什么吗?获取生成的查询并直接在 Access 数据库上运行,以验证查询是否有效以及您应该获取哪些数据。
-
你确认你的'rst'实际上返回了行吗?即是检索问题还是粘贴问题?
-
两个连续的逗号表示语法错误。
-
进一步说明 Dan 的观点,也许检查连接上的 Errors 集合。
-
最好在查询中的常量值周围使用单引号,就像在列名周围使用双引号一样。