【问题标题】:Query SQL Server from Excel with parameters使用参数从 Excel 查询 SQL Server
【发布时间】:2014-05-08 04:43:49
【问题描述】:

我正在尝试使用带有参数的查询将 SQL 服务器中的信息拉入 Excel 电子表格。

我已经能够从 excel 中查询数据库,但无法弄清楚如何添加参数。

我需要从工作表中的单元格获取参数。

Sub DataExtract()

Dim cnPubs As ADODB.Connection
Set cnPubs = New ADODB.Connection
Dim strConn As String
strConn = "PROVIDER=SQLOLEDB;"
strConn = strConn & "DATA SOURCE= MyServer ;INITIAL CATALOG = MyDatabase ;"
strConn = strConn & " INTEGRATED SECURITY=sspi;"
cnPubs.Open strConn
Dim rsPubs As ADODB.Recordset
Set rsPubs = New ADODB.Recordset
With rsPubs

.ActiveConnection = cnPubs

.Open "SELECT * FROM [MyTable] WHERE ColA = ?"

Sheet1.Range("B12").CopyFromRecordset rsPubs

.Close
End With
cnPubs.Close
Set rsPubs = Nothing
Set cnPubs = Nothing
End Sub

任何关于我如何简单地让查询中的问号引用工作表中的单元格的帮助将不胜感激。 谢谢

【问题讨论】:

    标签: sql excel vba parameters import


    【解决方案1】:

    未经测试:

    Sub DataExtract()
    
    Dim cmd as ADODB.Command, param as Object, val
    Dim cnPubs As ADODB.Connection
    Dim rsPubs As ADODB.Recordset
    Dim strConn As String
    
        Set cnPubs = New ADODB.Connection
    
        strConn = "PROVIDER=SQLOLEDB;"
        strConn = strConn & "DATA SOURCE= MyServer ;INITIAL CATALOG = MyDatabase ;"
        strConn = strConn & " INTEGRATED SECURITY=sspi;"
        cnPubs.Open strConn
    
        Set cmd = New ADODB.Command
        cmd.CommandText = "SELECT * FROM [MyTable] WHERE ColA = ?"
        cmd.CommandType = adCmdText
    
    
        val = Sheet1.Range("A1").Value 'query value to be used
        'create and add the parameter
        Set param = cmd.CreateParameter("", adVariant, adParamInput, 0, val)
        cmd.parameters.Append param
    
        Set cmd.ActiveConnection = cnPubs
    
        Set rsPubs = cmd.Execute()
    
        Sheet1.Range("B12").CopyFromRecordset rsPubs
    
    End Sub
    

    【讨论】:

    • 我成功地使用了 Oracle(不是 Access 用户)——不熟悉 SQL Server。不过,我确实看到很多使用? 和 SQL Server 的示例。
    • 是的,我猜 ADO 驱动程序可以解决这个问题。如果您想以任何顺序定义参数,命名就会出现。我很惊讶你还没有使用 Access
    • @Brad - 我不会说我“从未”使用过 Access,但我们更像是一家 Oracle 商店。
    • 完美运行!我意识到这是一个多么简单的问题,但直到现在我都无法理解它。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2016-05-21
    • 1970-01-01
    • 2013-06-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多