MS Access 2010日期范围结果不符合要求

时间:2015-05-20 11:59:23

标签: sql ms-access report

我正在使用此命令打开报告

                            DoCmd.OpenReport "fullreport_rpt", acViewReport, , _
                            "[Assignment] ='" & lngMyEmpID & "' AND [Start] BETWEEN DateValue(#" & Me.DateRange1_txt & "#) AND DateValue(#" & Me.DateRange2_txt & "#)", _
                            acDialog, OpenArgs:=Me.reporting_combo & " For " & Me.rMonthly_txt & Me.DateRange1_txt & "-" & Me.DateRange2_txt

[Start]是DateValue([StartTime]),StartTime是DateTime字段。

我想生成2015年5月1日至2015年5月20日的报告,但生成的报告包含2015年4月的行;

图片链接为http://s29.postimg.org/i066yqbl3/scrshot.png

不确定它有什么问题。

我将不胜感激。

2 个答案:

答案 0 :(得分:0)

正确使用DateValue:

BETWEEN DateValue(" & Me.DateRange1_txt & ") AND DateValue(" & Me.DateRange2_txt & ")", _

DateValue(“1-5-2015”)返回2015-05-01而

DateValue(#1-5-2015#)使用您的设置返回2015-01-05,其中包括4月的日期。

答案 1 :(得分:0)

我会以两种方式做到这一点。首先是将日期值转换为Double,因为这是JET解释日期的方式。

DoCmd.OpenReport "fullreport_rpt", acViewReport, , _
                "[Assignment] = '" & lngMyEmpID & "' AND [Start] BETWEEN " & CDbl(Me.DateRange1_txt) & " AND " & CDbl(Me.DateRange2_txt) & _
                , acDialog, OpenArgs:=Me.reporting_combo & " For " & Me.rMonthly_txt & Me.DateRange1_txt & "-" & Me.DateRange2_txt

使用 CDbl 是对来自日期控件的日期的非常有效的操作。如果还有其他情况,则需要使用正确的格式,Access对International Date Formats有疑问,请尝试此操作。

DoCmd.OpenReport "fullreport_rpt", acViewReport, , _
                "[Assignment] = '" & lngMyEmpID & "' AND [Start] BETWEEN " & Format(Me.DateRange1_txt, "\#mm\/dd\/yyyy\#") & " AND " & Format(Me.DateRange2_txt, "\#mm\/dd\/yyyy\#") & _
                , acDialog, OpenArgs:=Me.reporting_combo & " For " & Me.rMonthly_txt & Me.DateRange1_txt & "-" & Me.DateRange2_txt