运行-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。
如果有人能提供帮助,我们将不胜感激!
为此使用 DMax 和 DLookup:
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`
我在尝试让这段代码工作时遇到问题:
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。
如果有人能提供帮助,我们将不胜感激!
为此使用 DMax 和 DLookup:
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`