0

它没有正确处理日期范围的查询。

我有一个表,其中的值存储为 DateStamp 的“01/10/2013 11:00:00 PM”。范围从 2013 年 9 月 25 日凌晨 1:00:00 到 2013 年 2 月 10 日。

文本框值为 dtBegin = "28/09/2013" 和 dtEnd = 01/10/2013。

dSumUsuage = DSum("Average", "tblScadaHourly", "[DateStamp] >=  #" & dtBegin & "#" & " AND " & "[DateStamp] <  #" & dtEnd & "#" & " AND ([Station] ='" & sStationName & "')")

此查询返回“无效使用 Null”错误。但它们是这些日期之间的数据以及该站名的数据。

4

2 回答 2

1

这可能是典型的 Access 日期格式错误:当使用带斜线的英文日期格式时,Access 认为您使用格式 MM/DD/YYYY,除非这会导致日期无效(然后它会尝试 DD/MM/YYYY)。

因此,我更喜欢使用国际日期格式 YYYY-MM-DD。

在您的情况下,这可能会导致查询 ">=2013-09-28 And <2013-01-10",这显然无法返回任何结果。>> 使用国际格式,它会要求 ">=2013-09-28 和 <2013-10-01"

于 2013-10-24T18:24:56.500 回答
0

如上一个答案,您的 where 字符串格式错误,因为您的 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 & "')")
于 2013-10-24T18:40:59.953 回答