sql-server - 请求的操作需要 OLE DB Session 对象... - 通过 ADO 将 Excel 连接到 SQL 服务器

标签 sql-server excel vba oledb ado

我正在尝试使用 Excel 2003 并将其连接到 SQL Server 2000 以运行一些动态生成的 SQL 查询,最终填充某些单元格。

我尝试通过 ADO 通过 VBA 执行此操作(我已尝试过 2.8 到 2.0),但在设置 ActiveConnection 时遇到错误ADODB.Connection 内的变量目的。我需要尽快解决这个问题...

Requested operation requires an OLE DB Session object, which is not supported by the current provider.

老实说,我不确定这个错误意味着什么,但现在我不在乎。 如何使此连接成功以便我可以运行我的查询?

这是我的 VB 代码:

Dim SQL As String, RetValue As String
SQL = " select top 1 DateTimeValue from SrcTable where x='value' " 'Not the real SQL
RetValue = ""


Dim RS As ADODB.Recordset
Dim Con As New ADODB.Connection
Dim Cmd As New ADODB.Command

Con.ConnectionString = "Provider=sqloledb;DRIVER=SQL Server;Data Source=Server\Instance;Initial Catalog=MyDB_DC;User Id=<UserName>;Password=<Password>;"
Con.CommandTimeout = (60 * 30)


Set Cmd.ActiveConnection = Con   ''Error occurs here.

' I'm not sure if the rest is right. I've just coded it. Can't get past the line above.
Cmd.CommandText = SQL
Cmd.CommandType = adCmdText

Con.Open
Set RS = Cmd.Execute()

If Not RS.EOF Then

    RetValue = RS(0).Value
    Debug.Print "RetValue is: " & RetValue

End If
Con.Close

我认为连接字符串有问题,但我已经尝试了十几种变体。现在我只是在黑暗中拍摄......

注意/更新:让事情变得更加困惑的是,如果我在 Google 上搜索上面的错误引用,我会得到很多回复,但似乎没有任何相关信息,或者我不确定哪些信息是相关的....

我在“Microsoft Excel 对象”下的“Sheet1”中找到了 VBA 代码。我以前这样做过,但通常将东西放在模块中。这会有所作为吗?

最佳答案

您尚未打开连接。我认为在将其分配给 Command 对象之前,您需要一个 Con.Open

Con.ConnectionString = "Provider=sqloledb;DRIVER=SQL Server;Data Source=Server\Instance;Initial Catalog=MyDB_DC;User Id=<UserName>;Password=<Password>;"
Con.CommandTimeout = (60 * 30)

Con.Open

Set Cmd.ActiveConnection = Con   'Error occurs here.

Cmd.CommandText = SQL
Cmd.CommandType = adCmdText

关于sql-server - 请求的操作需要 OLE DB Session 对象... - 通过 ADO 将 Excel 连接到 SQL 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1669777/

相关文章:

sql - 在 Where 子句中使用 MAX() 聚合的 Select 语句

debugging - Excel:错误中断在用户定义函数中不起作用

excel - 下标超出范围 IF ISERROR 问题

excel - Excel VBA application.worksheetfunction 的简写

Excel VBA查找方法将搜索框 "Within"从工作簿重置为工作表

vba - 刷新数据透视表的运行时错误 1004

vba - 在VBA中创建列表字典

.net - Sql 包 Exe 可以在命令行中运行部署后脚本吗?

sql-server - SQL Server 案例/排序规则问题

SQL - 如何查找哪些操作正在使用所有最大并发连接