美好的一天亲爱的
当我运行表单时,我有一个表单运行带有条件的报表过滤器(条件)正确地为报表工作
但是当我创建PDF(DoCmd.OutputTo)时,PDF返回所有值(过滤器或条件不会起作用)。
这是我的代码
fSetAccessWindow (2)
DoCmd.OpenReport "Report1", acViewReport, _
"SELECT * FROM main WHERE ID LIKE '" & Nz(Me.cmrtxt, "*") & "' AND place_of_discharge_ar LIKE '" & Nz(Me.dischargecombo, "*") & "' AND border LIKE '" & Nz(Me.bordercombo, "*") & "' AND a_date Between " & _
Format(Nz(Me.statrdatetxt, "01/01/1900"), "\#mm\/dd\/yyyy\#") & " And " & _
Format(Nz(Me.enddatetxt, "01/01/2900"), "\#mm\/dd\/yyyy\#"), , acDialog
Me.Visible = True
DoCmd.OutputTo acOutputReport, "Report1", "", "", False, "", 0
fSetAccessWindow (SW_HIDE)
任何人都可以为我修复
亲切的问候
答案 0 :(得分:2)
我会将报告基于一个查询(如果不是这样)并且因为您知道运行时报表所需的SQL,您可以完全替换QueryDef中的SQL(使用正确的WHERE过滤器)并且输出报告。您不需要事先打开。省略OpenReport调用,只需执行以下操作:
CurrentDB.QueryDefs("qryMyReportBase").SQL = "SELECT * FROM main WHERE ID LIKE '" & Nz(Me.cmrtxt, "*") & "' AND place_of_discharge_ar LIKE '" & Nz(Me.dischargecombo, "*") & "' AND border LIKE '" & Nz(Me.bordercombo, "*") & "' AND a_date Between " & _
Format(Nz(Me.statrdatetxt, "01/01/1900"), "\#mm\/dd\/yyyy\#") & " And " & _
Format(Nz(Me.enddatetxt, "01/01/2900"), "\#mm\/dd\/yyyy\#")
DoCmd.OutputTo acOutputReport, "Report1", acFormatPDF, "C:\MySavePath\Report1.pdf", False
显然,“qryMyReportBase”应该是报告的源查询,“C:\ MySavePath”应该是您的保存路径。
另外,我没有在OutputTo中看到您将类型指定为PDF的位置。既然你在上面提到了这一点,我已经加入了。
答案 1 :(得分:0)
每当您打开报表时,它会根据查询过滤数据并根据需要显示结果。问题是,要执行Docmd.OutputTo
,首先必须关闭报告,当报告关闭时,过滤器效果将被清除,输出pdf将包含所有记录。
解决方法是,如果您不想预览报告,则可以使用acHidden
代替acDialog
,否则,如果您确实要预览报告,然后想要导出为pdf然后在表单上放置一个按钮和代码按钮,将报告导出为PDF格式。