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

MS Access 2010 Date range results not as desired

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

                            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 年 1 月 5 日到 2015 年 5 月 20 日的报告,但生成的报告包含 2015 年 4 月的行;

图片link是http://s29.postimg.org/i066yqbl3/scrshot.png

不确定它有什么问题。

如有任何帮助,我将不胜感激。

正确使用 DateValue:

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

DateValue("1-5-2015") returns 2015-05-01 而

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

我会通过两种方式做到这一点。首先是将日期值转换为 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