尽管相同的代码以另一种形式工作,但 DLookup 返回 null?
DLookup returning null despite same code working in another form?
我正在使用下面的代码从记录中查找最近的值,因此此实例获得 [Process No],其中 [Time] 字段等于我的 DMax
值。由于某些奇怪的原因,它突然停止工作,现在只有 return 为 null。
同样的代码在上周工作,但由于在周末(由其他人)输入了一个条目,所以所有类似的 DLookup
语句只有 return 个空值。相同的代码在我的其他表单中仍然有效,我已经删除了我认为是不可靠的记录但没有运气。
DMaxTime = DMax("[Time]", "Daily Oven/Product Record")
'Find last Process No entered
lastProcNoLookup = DLookup("[Process No]", "Daily Oven/Product Record", "[Time] = #" & DMaxTime & "#")
*DMaxTime 和 lastProcNoLookup 都是变体
当您为 DLookup
Criteria 选项添加 Date/Time 值时,将该值的日期部分格式化为 yyyy- m-d.
'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 格式为数据库引擎提供日期字符串时,如果该字符串不代表 [=26] 中的有效日期,Access 可以正确解释它=]mm/dd/yyyy格式。
例如,由于没有月份 25,数据库引擎知道 #25-1-2015# 必须表示 Jan, 1 2015.因此,此查询会按照您的意图解释该值。
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# 将被解释为 Mar 2 而不是 Feb 3, 2015 :
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 格式提供数据库引擎日期来避免此类混淆。
我正在使用下面的代码从记录中查找最近的值,因此此实例获得 [Process No],其中 [Time] 字段等于我的 DMax
值。由于某些奇怪的原因,它突然停止工作,现在只有 return 为 null。
同样的代码在上周工作,但由于在周末(由其他人)输入了一个条目,所以所有类似的 DLookup
语句只有 return 个空值。相同的代码在我的其他表单中仍然有效,我已经删除了我认为是不可靠的记录但没有运气。
DMaxTime = DMax("[Time]", "Daily Oven/Product Record")
'Find last Process No entered
lastProcNoLookup = DLookup("[Process No]", "Daily Oven/Product Record", "[Time] = #" & DMaxTime & "#")
*DMaxTime 和 lastProcNoLookup 都是变体
当您为 DLookup
Criteria 选项添加 Date/Time 值时,将该值的日期部分格式化为 yyyy- m-d.
'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 格式为数据库引擎提供日期字符串时,如果该字符串不代表 [=26] 中的有效日期,Access 可以正确解释它=]mm/dd/yyyy格式。
例如,由于没有月份 25,数据库引擎知道 #25-1-2015# 必须表示 Jan, 1 2015.因此,此查询会按照您的意图解释该值。
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# 将被解释为 Mar 2 而不是 Feb 3, 2015 :
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 格式提供数据库引擎日期来避免此类混淆。