首页 > 解决方案 > VBA SQL 查询中的问题引用列

问题描述

我有一个我正在尝试对其执行 SQL 查询的 excel 电子表格。我得到“没有为一个或多个必需参数提供值”,所以我认为这是我的查询有问题。我可以执行类似“SELECT * FROM [Employee$A2:A4]”的查询,但是当我使用名称(即名称、标题...等,甚至使用 F1 等通用列引用)引用特定列时,我得到“没有为一个或多个必需参数提供值。”

这是我的代码:

Dim cn As ADODB.Connection
Dim rs As ADODB.Recordset

strFile = ThisWorkbook.FullName
strCon = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & strFile _
& ";Extended Properties=""Excel 12.0;HDR=Yes;IMEX=1"";"

Set cn = CreateObject("ADODB.Connection")
Set rs = CreateObject("ADODB.Recordset")

cn.Open strCon

strSQL = "SELECT Employee FROM [Employee$] AS e WHERE e.Skill_Title = " & """" & skillTitle & """" & " AND e.Branch = " & """" & branchTitle & """" & " AND e.Skill_Prof = 5"

rs.Open strSQL, cn
MsgBox (rs.GetString)

任何想法可能会发生什么?

标签: sqlexcelvba

解决方案


尝试应用以下示例。

告诉我问题是否仍然存在以及您正在使用的输入。

我在员工表上有这个:

在此处输入图像描述

如下创建“MyQuery”子流程(如您所见,这是您的代码的副本,有一些小的差异):

Sub MyQuery(ByVal skillTitle As String, _
            ByVal branchTitle As String, _
            ByVal skillProf As Integer)

    Dim Cn As ADODB.Connection
    Dim Rs As ADODB.Recordset

    strFile = ThisWorkbook.FullName

    strCon = _
        "Provider=Microsoft.ACE.OLEDB.12.0;" & _
        "Data Source=" & strFile & ";" & _
        "Extended Properties=""Excel 12.0;" & _
        "HDR=Yes;" & _
        "IMEX=1"";"

    Set Cn = CreateObject("ADODB.Connection")
    Set Rs = CreateObject("ADODB.Recordset")

    Cn.Open strCon

    strSQL = _
        "SELECT Employee " & _
        "FROM [Employee$] AS e " & _
        "WHERE e.Skill_Title = '" & skillTitle & "' AND " & _
               "e.Branch = '" & branchTitle & "' AND " & _
               "e.Skill_Prof = " & CStr(skillProf)

    Rs.Open strSQL, Cn

    MsgBox (Rs.GetString)

    'Do not forget closing your connection'
    Rs.Close
    Cn.Close

End Sub

做了一个快速测试:

Sub test()
    'Try running this'
    Call MyQuery("FOUR", "Y", 5)

End Sub

结果:

在此处输入图像描述


推荐阅读