Ms access 在VBA、SQL后端、Access前端中具有Max(Date)功能的WHERE子句

Ms access 在VBA、SQL后端、Access前端中具有Max(Date)功能的WHERE子句,ms-access,vba,Ms Access,Vba,在Access中,我试图构建一个带有MaxDate功能的WHERE子句,但它不起作用。任何帮助都将不胜感激 strSQL1 = "Update tTbl_LoginSessions SET fldLogoutEvent = '" & Now() & "'" & _ " WHERE fldUserName = " & IntMSIDAutoNum And fldLoginEvent = MAX(fldLoginEvent) fldLoginEvent是用户登录的

在Access中,我试图构建一个带有MaxDate功能的WHERE子句,但它不起作用。任何帮助都将不胜感激

strSQL1 = "Update tTbl_LoginSessions SET fldLogoutEvent = '" & Now() & "'" & _
 " WHERE fldUserName = " & IntMSIDAutoNum And fldLoginEvent = MAX(fldLoginEvent)
fldLoginEvent是用户登录的日期/时间
FLDLOGOUTTEVER是用户将注销的日期/时间

最明显的更正:

strSQL1 = "Update tTbl_LoginSessions SET fldLogoutEvent = '" & _
           Now() & "'" & " WHERE fldUserName = " & IntMSIDAutoNum  & _
           " And fldLoginEvent =  (select top 1 fldLoginEvent from " & _
           " tTbl_LoginSessions )"

包括调试。打印STRSQL1,然后检查其输出,这样您就可以看到如何调整引用。并且考虑使用参数查询。是的,这是第一步,但是WHERE子句中的Max FLLDLogin事件将不起作用。错过了SQL后端部分。编辑了我的答案。问题表明FLDLOGOUTPEVENT是一个日期/时间字段。因此,对于Access查询,除非它是传递类型,否则分隔符必须是而不是“无论它是否是SQL Server表中的字段”。但切换到参数查询将避免分隔符问题。或者现在只在语句中包含字面函数名,让Access'db engine提供值。可能是这样的:从Tbl_LoginSessions中选择MAXfldLoginEvent?@Tim Williams,这似乎可行,但它选择了最早的登录日期/时间,不是最晚的更新tTbl_登录会话集FLDLOGOUTTEVENT='11/18/2013 1:19:50 PM',其中fldUserName=1,fldLoginEvent=从tTbl_登录会话中选择前1个fldLoginEvent