通过参数传递查询

时间:2017-03-16 13:00:25

标签: vba access-vba ms-access-2013 pass-through

我正在尝试运行Access 2013传递查询,该查询从我的VBA语法中获取两个参数。当我运行它时,我得到

的编译错误
  

预期结束声明
  “和”

如何修改此sub以使其成为有效的sql string?

Public Sub GeneratePassThroughForJob()

    Dim qdfPassThrough As DAO.QueryDef, MyDB As Database
    Dim strConnect As String, d1 As String, d2 As String, Dim SQL As String

    d1 = Format(Forms!DataPull!txtd1, "YYYY-MM-DD")
    d2 = Format(Forms!DataPull!txtd2, "YYYY-MM-DD")

    If Not IsNull(CurrentDb.QueryDefs("qrySQLPass").SQL) Then
        CurrentDb.QueryDefs.Delete "qrySQLPass"
    End If

    Set MyDB = CurrentDb()
    Set qdfPassThrough = MyDB.CreateQueryDef("qrySQLPass")
    strConnect = "ValidSQLServerConnectionString"

    qdfPassThrough.Connect = "ODBC;" & strConnect

    SQL = "Select fname, lname, address from einfo where startdate between "&d1&" and "&d2&""

    qdfPassThrough.SQL = "Select fname, lname, address from einfo where startdate between "&d1&" and "&d2&""

    qdfPassThrough.ReturnsRecords = False
    qdfPassThrough.Close

    Application.RefreshDatabaseWindow

    DoCmd.OpenQuery "qrySQLPass", acViewNormal, acReadOnly
    DoCmd.Maximize
End Sub

1 个答案:

答案 0 :(得分:-1)

应该为SQL Server引用日期,并且不要忘记空格:

SQL = "Select fname, lname, address from einfo where startdate between '" & d1 & "' and '" & d2 & "'"