繁体   English   中英

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

[英]Requested operation requires an OLE DB Session object… - Connecting Excel to SQL server via ADO

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

我试图通过ADO通过VBA执行此操作(我已经尝试过2.8到2.0)但是在设置ADODB.Connection对象内部的ActiveConnection变量时出现错误。 我需要快速解决这个问题......

请求的操作需要OLE DB会话对象,当前提供程序不支持该对象。

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

这是我的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

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

注意/更新 :为了让事情更加混乱,如果我谷歌上面的错误报价,我得到了很多回击,但似乎没有任何相关性,或者我不确定哪些信息是相关的....

我在“Microsoft Excel Objects”下的“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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM