Ms access 如何输出带条件的访问报告
再见,亲爱的 我有一个窗体要运行带有条件的报表当我运行窗体时,筛选器(条件)对报表正常工作 但是当我创建PDF(DoCmd.OutputTo)时,PDF返回所有值(过滤器或条件不起作用) 这是我的密码 Ms access 如何输出带条件的访问报告,ms-access,vba,Ms Access,Vba,再见,亲爱的 我有一个窗体要运行带有条件的报表当我运行窗体时,筛选器(条件)对报表正常工作 但是当我创建PDF(DoCmd.OutputTo)时,PDF返回所有值(过滤器或条件不起作用) 这是我的密码 fSetAccessWindow (2) DoCmd.OpenReport "Report1", acViewReport, _ "SELECT * FROM main WHERE ID LIKE '" & Nz(Me.cmrtxt, "*") &
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)
谁能帮我修一下吗
无论何时打开报告,它都会根据查询过滤数据,并根据需要显示结果。问题是,要执行
Docmd.OutputTo
,首先必须关闭报告,当报告关闭时,过滤效果将被清除,输出pdf将包含所有记录
解决方案是,如果您不想预览报告,则可以使用
acHidden
而不是acDialog
,否则,如果您确实希望预览报告,然后希望导出为pdf,则在表单上放置一个按钮并对该按钮进行编码,以将报告导出为pdf。我将根据查询生成报告(如果不是这样的话)并且由于您知道运行时报表所需的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的任何地方。因为这是您上面提到的,所以我在中添加了它。是的,我可以修复它。但是我已经为您提供了一个修复程序。您可以尝试一下。如果我删除,它会给我另一个错误