【问题标题】:VB function get data from SQL server [duplicate]VB函数从SQL服务器获取数据[重复]
【发布时间】:2014-03-18 03:28:26
【问题描述】:

vb代码如下:

Function GetDCF(vari As String)

Dim rs As ADODB.Recordset
Set rs = New ADODB.Recordset

Dim cn As ADODB.Connection
Set cn = New ADODB.Connection

Dim strConn As String
Dim sql As String

strConn = "PROVIDER=SQLOLEDB;DATA SOURCE=xxxxxx;INITIAL CATALOG=xxxxx;INTEGRATED SECURITY=sspi;"

cn.Open strConn

sql = "select '" & vari & "'  from TBLmontecarlodcf where COMPANY = '" & Range("A2").Value & "' "

rs.Open sql, cn, adOpenDynamic, adLockOptimistic

GetDCF = rs.Fields(vari)

cn.Close

Set rs = Nothing
Set cn = Nothing

End Function

但它不会在 excel 中返​​回值。相反,如果我用 sql server 中的真实字段替换 '" & vari & "' 并输入 GetDCF=rs!fieldname,我确实得到了值。请问GetDCF = rs.Fields(vari)哪里出了问题?

【问题讨论】:

    标签: sql excel vba


    【解决方案1】:

    您似乎在 sql 中用单引号将您的字段括起来。假设传递给函数的vari 的值是Person,而你的Range("A2").valueCatepillar,那么你的sql 将看起来像select 'person' from TBLmontecarlodcf where COMPANY = 'Catepillar'

    改为:

    sql = "select " & vari & "  from TBLmontecarlodcf where COMPANY = '" & Range("A2").Value & "' "
    

    【讨论】:

    • 谢谢,似乎 "select " & vari & " from 仍然不起作用(我猜是因为 vari 是 excel 中的一个变量)但现在可以了,因为我只是使用 select * from.. . 现在一切正常。感谢您的建议!
    • vari 的类型为 string,正如您在顶部子例程的输入中声明的那样。我能想到的唯一原因是它仍然会失败,因为您的字段名称中有一个空格,例如“我的字段”,而不是更传统的字段命名“my_field”。如果是这种情况,那么您需要将该字段括在方括号中。 sql = "select [" & vari & "] from TBLmontecarlodcf where COMPANY = '" & Range("A2").Value & "' "
    • 我的字段名没有空格。我猜 vari 是 excel vba 中的一个变量,我不能直接在 sql 中写 select vari from...
    猜你喜欢
    • 2010-09-27
    • 1970-01-01
    • 1970-01-01
    • 2014-06-25
    • 1970-01-01
    • 2019-01-26
    • 2021-10-21
    • 2017-11-20
    • 1970-01-01
    相关资源
    最近更新 更多