我使用下面的代码查找记录中的最新值,因此此实例获取[处理否],其中[时间]字段等于我的DMax
值。由于一些奇怪的原因,它突然停止工作,现在只返回null。
这个代码在上周工作,但由于周末(由其他人)输入,所有类似的DLookup
语句只返回空值。相同的代码仍然以我的其他形式工作,我已经删除了我虽然是狡猾的记录,但没有运气。
DMaxTime = DMax("[Time]", "Daily Oven/Product Record")
'Find last Process No entered
lastProcNoLookup = DLookup("[Process No]", "Daily Oven/Product Record", "[Time] = #" & DMaxTime & "#")
* DMaxTime和lastProcNoLookup都是变体
答案 0 :(得分:0)
当您为DLookup
条件选项添加日期/时间值时,请将该值的日期部分格式设置为 yyyy-md 。
'Find last Process No entered
Dim strCriteria As String
strCriteria = "[Time] = " & Format(DMaxTime, "\#yyyy-m-d hh:nn:ss\#")
Debug.Print strCriteria
lastProcNoLookup = DLookup("[Process No]", "Daily Oven/Product Record", strCriteria)
说明:
当您为数据库引擎提供 dd / mm / yyyy 格式的日期字符串时,如果字符串不代表 mm / dd / yyyy中的有效日期,Access可以正确解释它格式。
例如,由于没有第25个月,数据库引擎知道#25-1-2015#必须表示 2015年1月1日。因此,此查询按您的意图解释该值。
SELECT Year(#25-1-2015#) AS [Year], Format(#25-1-2015#, 'mmm d, yyyy') AS Formatted_date
Year Formatted_date
---- --------------
2015 Jan 25, 2015
但#3-2-2015#将被解释为 3月2日而不是 2015年2月3日:
SELECT Year(#3-2-2015#) AS [Year], Format(#3-2-2015#, 'mmm d, yyyy') AS Formatted_date
Year Formatted_date
---- --------------
2015 Mar 2, 2015
您可以通过始终以 yyyy-m-d 格式提供数据库引擎日期来避免此类混淆。