在Excel VBA中选择SQL语句

时间:2016-01-07 18:15:30

标签: sql vba excel-vba recordset excel

Sub LogCheck()
    Dim cn As Object
    Dim rs As Object
    Dim StrSql As String
    Dim strConnection As String
    Dim AppPath As String
    Set cn = CreateObject("ADODB.Connection")
    AppPath = Application.ActiveWorkbook.Path
    strConnection = "Provider=Microsoft.ACE.OLEDB.12.0;" & _
        "Data Source=C:\ceo.accdb;"
    cn.Open strConnection
    S_ID = Sheets("My").Range("A1").Value
    StrSql = "SELECT * FROM EDO Where ID = ' " & S_ID & " '"
    rs.Open StrSql, cn
    If rs = Null Then
        MsgBox "Record Not found"
    Else
        MsgBox "Record Found"
    End If
End Sub

我无法运行此代码。它显示错误。请帮帮我。谢谢! 这里S_ID是我想要从表格中搜索的数据。 ID是EDO表中的主键。

2 个答案:

答案 0 :(得分:0)

如果Id是数字,则应该是sql:

StrSql = "SELECT * FROM EDO WHERE Id = " & S_ID

您也没有定义S_ID,因此它将作为变量处理。如果您仍然遇到错误,可能需要制作错误"& CStr的(S_ID)"

答案 1 :(得分:0)

在这种情况下,您可以检测记录集是否为空,检查.EOF property

Sub TestIfRecordFound()

    Dim strConnection As String
    Dim strID As String
    Dim strQuery As String
    Dim objConnection As Object
    Dim objRecordSet As Object

    strConnection = _
        "Provider=Microsoft.ACE.OLEDB.12.0;" & _
        "Data Source='C:\ceo.accdb';"
    strID = Sheets("My").Range("A1").Value
    strQuery = _
        "SELECT * FROM EDO WHERE ID = '" & strID & "';"

    Set objConnection = CreateObject("ADODB.Connection")
    objConnection.Open strConnection
    Set objRecordSet = objConnection.Execute(strQuery)

    If objRecordSet.EOF Then
        MsgBox "Record Not found"
    Else
        MsgBox "Record Found"
    End If

    objConnection.Close

End Sub