Ms access MS Access-Docmd.OpenReport
我正在尝试打开一个包含两个日期(dateFrom和dateTo)之间的date字段的报表,它来自表单中的文本框Ms access MS Access-Docmd.OpenReport,ms-access,vba,Ms Access,Vba,我正在尝试打开一个包含两个日期(dateFrom和dateTo)之间的date字段的报表,它来自表单中的文本框 dateFrom = Forms!formOptions!txtDateFrom.Value dateTo = Forms!formOptions!txtDateTo.Value 已尝试: (编辑:) dateFrom和dateTo变量前后有无“#” &字段名周围有[]和没有[],仍然无法获取 这是我的工作 当我尝试此代码时: strCriteria=“[ActionTime]
dateFrom = Forms!formOptions!txtDateFrom.Value
dateTo = Forms!formOptions!txtDateTo.Value
已尝试:
(编辑:)
dateFrom和dateTo变量前后有无“#”
&字段名周围有[]和没有[],仍然无法获取
这是我的工作
当我尝试此代码时:
strCriteria=“[ActionTime]>=”&dateFrom&“,[ActionTime]=”&dateFrom&“,“[ActionTime]”和“[ActionTime]”共享的尝试将不起作用。第一个,因为日期应该以特定的方式格式化(YYYY-MM-DD或MM/DD/YYYYYY),并用
包围(值,而不是字段名)。第二,因为您正在将文本字符串'[ActionTime]'
与包含日期的字符串进行比较,这不是一件非常明智的事情
但是,简单而安全的方法是设置参数:
strCriteria = "[ActionTime] >= dateFrom And [ActionTime] <= dateTo"
DoCmd.SetParameter "dateFrom", dateFrom
DoCmd.SetParameter "dateTo", dateTo
DoCmd.OpenReport "reportLog", acViewReport, , strCriteria
strCriteria=“[ActionTime]>=dateFrom和[ActionTime]日期值需要格式正确的字符串表达式:
Dim dateFrom As Date
Dim dateTo As Date
dateFrom = DateValue(Forms!formOptions!txtDateFrom.Value)
dateTo = DateValue(Forms!formOptions!txtDateTo.Value)
strCriteria = "[ActionTime] >= #" & Format(dateFrom, "yyyy\/mm\/dd") & "# And [ActionTime] <= #" & Format(dateTo, "yyyy\/mm\/dd") & "#"
Debug.Print "'" & strCriteria & "'"
DoCmd.OpenReport "reportLog", acViewReport, , strCriteria
Dim dateFrom As Date
Dim dateTo As Date
dateFrom=DateValue(Forms!formOptions!txtDateFrom.Value)
dateTo=DateValue(Forms!formOptions!txtDateTo.Value)
strCriteria=“[ActionTime]>=#”&Format(dateFrom,“yyyy\/mm\/dd”)和[ActionTime]=#”&Format(dateFrom,“yyyyy\/mm\/dd”)和[reportLog]。[ActionTime]我的意思是,我试过在dateFrom和dateTo变量周围使用和不使用#。还有[]围绕字段名。将编辑问题。但此报告中的ActionTime取自一个表,在该表中,此字段的类型为date,是否仍被视为字符串?我将尝试您建议的方法,谢谢。任何由“
引号分隔的内容都是Access SQL中的字符串。自动类型转换很少。比谢谢你的时间和建议。尝试了这个,但是“输入参数值”对话框仍然弹出。我想可能是因为它无法识别[ActionTime],并在[ActionTime]前面添加了[reportLog]!类似于[reportLog]![ActionTime],这一次对话框没有弹出,报告也打开了,但它仍然没有遵循日期标准。感谢您的建议。然后,[ActionTime]
拼写错误,或者不是报告记录源中的字段。我检查了多次,[ActionTime]
是报表和表中字段的完全相同的名称,是的,拼写相同。我不知道是什么原因造成了这种情况。检查条件字符串-请参阅调试。打印编辑的答案。我以前也使用调试进行过检查。这是立即窗口中出现的内容。[ActionTime]>=\05/22/2018\[行动时间]
DoCmd.OpenReport "reportLog", acViewReport, , WhereCondition:="'[ActionTime] >= #" & dateFrom & "# AND [ActionTime] <= #" & dateTo & "#'"
strCriteria = "[ActionTime] >= dateFrom And [ActionTime] <= dateTo"
DoCmd.SetParameter "dateFrom", dateFrom
DoCmd.SetParameter "dateTo", dateTo
DoCmd.OpenReport "reportLog", acViewReport, , strCriteria
Dim dateFrom As Date
Dim dateTo As Date
dateFrom = DateValue(Forms!formOptions!txtDateFrom.Value)
dateTo = DateValue(Forms!formOptions!txtDateTo.Value)
strCriteria = "[ActionTime] >= #" & Format(dateFrom, "yyyy\/mm\/dd") & "# And [ActionTime] <= #" & Format(dateTo, "yyyy\/mm\/dd") & "#"
Debug.Print "'" & strCriteria & "'"
DoCmd.OpenReport "reportLog", acViewReport, , strCriteria
strCriteria = "[reportLog].[ActionTime] >= #" & Format(dateFrom, "yyyy\/mm\/dd") & "# And [reportLog].[ActionTime] <= #" & Format(dateTo, "yyyy\/mm\/dd") & "#"