我正在努力解决这个问题
我有一个查询,当我在MSSQL服务器管理工作室中运行它给我18行,它存储在一个单元格中。数据库连接到实时服务器,我们希望从中创建Excel仪表板,以便使用实时数据刷新并创建图形等....
*****编辑*****
我尝试了一个非常简单的查询,它可以实现,例如
从表中选择max(datetime),我确实有最新的同步。
事情是:我的查询有
1)用于验证的声明表 2)临时表"表格为();"对所有数据进行排序并使用一些过滤对它们进行排序" 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工具,并希望确保它不是与服务器相关的问题。
提前谢谢
答案 0 :(得分:3)
con.Open (strCon)
rs.ActiveConnection = strCon
应该是
con.Open strCon
rs.ActiveConnection = con
即。您应该将ActiveConnection
设置为刚刚打开的Connection
对象,而不是连接字符串。