我在这种情况下苦苦挣扎
我有一个查询,当我在 MSSQL 服务器管理工作室中运行时,它给了我 18 行,它存储在一个单元格中。数据库连接到实时服务器,我们想用它们创建 Excel 仪表板,以便用实时数据刷新它并创建图表等....
***** 编辑 *****
我尝试了一个非常简单的查询,例如我可以得到它
从表中选择 max(datetime),我确实有最新的同步。
问题是:我的查询有
1) 用于验证的声明表
2) 一个临时表“with table as();”对所有数据进行排序并使用一些过滤“RowNumber”对它们进行排名,该过滤“RowNumber”稍后会使用 where 语句调用,该语句仅采用一些行号以避免重复
我认为在之间的连接必须关闭,可以吗?
通常这段代码可以运行,但对于这个服务器,我得到:
“对象关闭时不允许运行时错误 3704 操作”
我搜索了论坛和谷歌没有运气
Dim con As ADODB.Connection
Dim rs As ADODB.Recordset
Dim query As String
Set con = New ADODB.Connection
Set rs = New ADODB.Recordset
strCon = "Provider=SQLOLEDB.1;" _
& "Password=*******;" _
& "Persist Security Info=True;" _
& "User ID=********;" _
& "Initial Catalog=*******;" _
& "Data Source=***.**.**.**;" _
& "Use Procedure for Prepare=1;" _
& "Auto Translate=True;Packet Size=4096;" _
& "Use Encryption for Data=False;" _
& "Tag with column collation when possible=False"
con.Open (strCon)
rs.ActiveConnection = Con 'modified with suggestion below
strSQLQuery = Worksheets("Query").Range("B2").Value
rs.Open strSQLQuery
For i = 0 To rs.Fields.Count - 1
Sheet2.Cells(1, i + 1) = rs.Fields(i).Name
Next i
Worksheets("Result").Range("A2").CopyFromRecordset rs
rs.Close
Set rs = Nothing
con.Close
Set cn = Nothing
魔术师能帮帮我吗?因为现在我使用 excel VBA 作为演示,但我想将其推广为 VB 工具,并希望确保它不是与服务器相关的问题。
先感谢您
最佳答案
con.Open (strCon)
rs.ActiveConnection = strCon
应该
con.Open strCon
rs.ActiveConnection = con
IE。你应该设置
ActiveConnection
到Connection
您刚刚打开的对象,而不是连接字符串。
关于sql-server - 打开的对象上的运行时错误 3704,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43378988/