代码之家  ›  专栏  ›  技术社区  ›  aSystemOverload

通过ADODB.连接到Excel中的SQL Server 2008时出现错误3709

  •  3
  • aSystemOverload  · 技术社区  · 14 年前

    我正试图使用以下代码在Excel中的SQL Server上打开一个记录集,但得到 3709 - The connection cannot be used to perform this operation. It is either closed or invalid in this context. 错误我哪里错了?:

    编辑:

    它现在正在工作,我将更新以下代码:

    '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)
    
    2 回复  |  直到 8 年前
        1
  •  3
  •   Community Mohan Dere    9 年前

    Remou为我指明了另一个连接字符串的方向,但我仍然得到了相同的结果。我在谷歌上搜索了一会儿,想出了另一个SO问题 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)
    
        2
  •  0
  •   Fionnuala    14 年前

    这不是您需要的连接字符串。它应该读成这样:

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

    看见 http://connectionstrings.com