2012-08-08 136 views
2

我想在Excel中使用下面的代码在SQL Server上打开记录集,但得到3709 - The connection cannot be used to perform this operation. It is either closed or invalid in this context.错误。我要去哪里错了?:错误3709当通过ADODB.connection连接到SQL Server 2008在Excel中

编辑:

它现在的工作,我会更新代码如下:

'Declare variables' 
    Set objMyConn = New ADODB.Connection 
    Set objMyRecordset = New ADODB.Recordset 
    Dim strSQL As String 

'Open Connection' 
    objMyConn.ConnectionString = "Driver={SQL Server};Server=SERVER\SERVER; Database=we_ci_db; Trusted_Connection=Yes" 
    objMyConn.Open 

'Set and Excecute SQL Command' 
    strSQL = "select * from tblUsers" 

'Open Recordset' 
    Set objMyRecordset.ActiveConnection = objMyConn 
    objMyRecordset.Open strSQL 

'Copy Data to Excel' 
    ActiveSheet.Range("A1").CopyFromRecordset (objMyRecordset) 
+0

本身是没有错的字符串,我已经尝试了几种组合,这是完全不同的,但所有工作。这是我的第一个“开放”路线,我没有对。我需要使用其他属性,cnn,adOpenStatic等... – aSystemOverload 2012-08-13 14:41:11

回答

2

Remou指出我在替代连接字符串的方向,但我仍然得到了同样的结果。我用Google搜索周围了一下,与其他太问题LINK有不同的实现,这导致了上来:

'Declare variables' 
    Set objMyConn = New ADODB.Connection 
    Set objMyRecordset = New ADODB.Recordset 
    Dim strSQL As String 

'Open Connection' 
    objMyConn.ConnectionString = "Driver={SQL Server};Server=SERVER\SERVER; Database=we_ci_db; Trusted_Connection=Yes" 
    objMyConn.Open 

'Set and Excecute SQL Command' 
    strSQL = "select * from tblUsers" 

'Open Recordset' 
    Set objMyRecordset.ActiveConnection = objMyConn 
    objMyRecordset.Open strSQL 

'Copy Data to Excel' 
    ActiveSheet.Range("A1").CopyFromRecordset (objMyRecordset) 
0

那是不是你所需要的连接字符串。应改为类似:

Provider=sqloledb;Data Source=SERVER\SERVER;Initial Catalog=cs_db;Integrated Security=SSPI; 

http://connectionstrings.com

+0

我已更新到您指定的字段/值,并且仍然显示[3709 - 连接不能用于执行此操作。它在这种情况下是封闭的或无效的。] – aSystemOverload 2012-08-13 12:50:04

+0

我看你有MS Access,你可以链接到一张表吗?这是http://support.microsoft.com/kb/839428相关吗? – Fionnuala 2012-08-13 12:52:03

+0

不要相信。 – aSystemOverload 2012-08-13 14:05:41