它没有正确处理日期范围的查询。
我有一个表格,其值存储为“01/10/2013 11:00:00 PM”,用于DateStamp。范围从2013年9月25日上午1:00:00到2013年10月2日。
文本框值为dtBegin =“28/09/2013”和dtEnd = 01/10/2013。
dSumUsuage = DSum("Average", "tblScadaHourly", "[DateStamp] >= #" & dtBegin & "#" & " AND " & "[DateStamp] < #" & dtEnd & "#" & " AND ([Station] ='" & sStationName & "')")
此查询返回“无效使用Null”错误。但它们是这些日期和该电台名称之间的数据。
答案 0 :(得分:1)
这可能是一个经典的访问日期格式错误:当使用带有斜杠的英文日期格式时,Access认为您使用格式MM / DD / YYYY,除非这会导致无效日期(然后它会尝试DD / MM / YYYY)。
因此,我更喜欢使用国际日期格式YYYY-MM-DD。
在您的情况下,这可能会导致查询“&gt; = 2013-09-28 And&lt; 2013-01-10”,这显然无法返回任何结果。 &GT;&GT;对于国际格式,它会要求“&gt; = 2013-09-28和&lt; 2013-10-01”
答案 1 :(得分:0)
如上一个答案所示,您的字符串格式错误,因为您的dSumUsuage类型为Date,它不接受Null,因为没有记录符合您的错误WHERE约束,因此会引发错误。
我们使用这个程序:
Public Function FormatDateTimeVb(ByVal varDateTime)
FormatDateTimeVb = "#" & Format(varDateTime, "yyyy-mm-dd hh:mm:ss") & "#"
End Function
使用此函数形成日期时间字符串,现在我们得到tblScadaHourly.Average的总和:
dSumUsuage = DSum("Average", "tblScadaHourly", _
"[DateStamp] >= " & FormatDateTimeVb(dtBegin) _
& " AND [DateStamp] < " & FormatDateTimeVb(dtEnd) _
& " AND ([Station] = '" & sStationName & "')")