sql-server - 打开的对象上的运行时错误 3704

标签 sql-server excel vba

我在这种情况下苦苦挣扎

我有一个查询,当我在 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。你应该设置ActiveConnectionConnection您刚刚打开的对象,而不是连接字符串。

关于sql-server - 打开的对象上的运行时错误 3704,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43378988/

相关文章:

excel - 从回车键触发事件

excel - 循环遍历数字组合

Excel VBA 在第二个空格后拆分

sql-server - 从存储过程引用远程 MS SQL 数据库

sql-server - 使用 VBA 仅将新记录插入到 SQL 表中

c# - 与 SQL Server 中的安全数据库建立安全连接

java - 文件选择器选择了错误的导出目录

vba - 通过 Thunderbird 发送 Excel 宏

c# - 如何自动设置 DateCreated 和 DateUpdated

sql-server - 客户端有两个不同的 SQL Server 2012?