如何从包含另一个查询作为字符串的Excel / vba中传递SQL查询

时间:2018-07-24 14:14:50

标签: sql excel vba

我正在使用Excel / vba将查询发送到SQL Server。该查询类似于:

queryExample

如果我在SQL Server Management Studio中运行此查询,则会获得所需的结果,但是当我从Excel / vba运行该查询时,会出现错误

  

关闭对象时不允许操作。

我试图这样将其传递给SQL Server Management Studio(其中Dim rs As New ADODB.Recordset Set Connection = New ADODB.Connection Connection.ConnectionString = "... connection string ..." Connection.Open With rs .ActiveConnection=Connection .Open queryExample End With 是我的查询):

Dim rs As New ADODB.Recordset
Dim cmd As New ADODB.Command
Set Connection = New ADODB.Connection
cmd.CommandText = queryExample
cmd.CommandType = adCmdText
cmd.ActiveConnection = Connection
Set rsSR = cmd.Execute

像这样

exec()

,但没有任何效果,而且我总是遇到相同的错误。我认为问题出在select top 10 col1, col2, col3 from sometable 函数中,因为如果我这样传递查询:

Dim rs As New ADODB.Recordset
Dim cmd As New ADODB.Command
Set Connection = New ADODB.Connection
Connection.ConnectionString = "... connection string ..."
Connection.Open
cmd.CommandText = queryExample
cmd.CommandType = adCmdText
cmd.ActiveConnection = Connection
Set rsSR = cmd.Execute

我没有收到任何错误,并且记录集中填充了数据。

我在做什么错?任何帮助,将不胜感激。

谢谢。

编辑:

在复制用于最后一个示例的vba代码以将查询传递到SQL Server Management Studio时,我犯了一个错误,实际代码是:

<project basedir="..">

在两种情况下都打开了连接-Connection对象的.State的值为1。

0 个答案:

没有答案