我正在使用此命令打开报告
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
不确定它有什么问题。
我将不胜感激。
答案 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