Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ms access MS Access-Docmd.OpenReport_Ms Access_Vba - Fatal编程技术网

Ms access MS Access-Docmd.OpenReport

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和dateTo)之间的date字段的报表,它来自表单中的文本框

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") & "#"