运行-Access 中的时间 3464 VBA。尝试使用 SQL select 语句打开记录集

Run-time 3464 in Access VBA. Trying to open a recordset with SQL select statement

我在尝试让这段代码工作时遇到问题:

Public Sub GetDepot()
    Dim fs As Date
    Dim ss As Long

    fs = CurrentDb.OpenRecordset("SELECT Max(fldMovementDate) FROM [tblMovements] WHERE [fldMovementTypeIdfk] =1")(0)

    ss = CurrentDb.OpenRecordset("SELECT(fldMovementLocationIdfk) FROM [tblMovements]  WHERE [fldMovementDate]= '" & fs & "'")(0)

    MsgBox (ss)
End Sub

最终,我试图用其最后一个仓库位置填充表单上的文本框。调试会找出我尝试设置 ss 变量的位置。我的 SQL 语句出了点问题,我尝试了各种方法来纠正它,但都无济于事。我还尝试将变量存储为不同的数据类型,认为这可能是我出错的地方,但这种方法仍然无法解决问题。

末尾的 MsgBox 只是用来帮助尝试和调试,但代码还没有到那一步。我知道我需要向这个 Sub 添加更多内容才能完成我需要的内容,但无法进一步完成。

我还尝试设置一个 MsgBox 来显示 fs 变量存储的内容,这似乎显示了正确的日期,即 18/02/16。

如果有人能提供帮助,我们将不胜感激!

为此使用 DMaxDLookup:

fs = DMax("fldMovementDate", "[tblMovements]", "[fldMovementTypeIdfk] = 1")

ss = DLookup("fldMovementLocationIdfk", "[tblMovements]", "[fldMovementDate]= #" & Format(fs, "yyyy\/mm\/dd") & "#")

或者这样做:

Public Sub GetDepot()

    Dim rs As DAO.Recordset
    Dim ss As Long

    Set rs = CurrentDb.OpenRecordset("SELECT TOP 1 fldMovementLocationIdfk FROM [tblMovements] WHERE [fldMovementTypeIdfk] = 1 ORDER BY fldMovementDate DESC")

    ss = rs(0).Value
    rs.Close

    Set rs = Nothing

    MsgBox (ss)

End Sub`