Office中国论坛/Access中国论坛

标题: 批量导出PDF报表【2007格式以上适用】 [打印本页]

作者: roych    时间: 2015-11-30 17:14
标题: 批量导出PDF报表【2007格式以上适用】
本帖最后由 roych 于 2015-11-30 17:16 编辑

供新手学习参考:
主要知识点:
QueryDef对象及SQL属性
OutPutTo方法【OutPutTo导出PDF只适用于2007格式以上。2003格式需要注册其它控件,请参考论坛上的例子
ADO记录集对象及GetRows方法数组维数的使用
主要语句:
Set、New关键字和For循环
[attach]57519[/attach]
没什么好说的,重要的都已经注释过,各个知识点需要新手们自己去查阅资料学习了。这是一个网友的的问题,我懒得去改报表格式啦。
  1. Private Sub Command38_Click()
  2.     Dim qry_Report As QueryDef
  3.     Dim rst As New ADODB.Recordset
  4.     Dim arr_Number
  5.     Dim i As Long
  6.     Dim str_SQL As String
  7.    
  8.     '获取供应商编号
  9.      rst.Open "select 供应商编号 from [Q0010_Summary List]", CurrentProject.Connection, adOpenKeyset, adLockOptimistic
  10.     arr_Number = rst.GetRows()
  11.     rst.Close
  12.     Set rst = Nothing
  13.    
  14.     '定义报表和报表对应的记录源,注意替换掉SQL语句最后的分号。
  15.     Set qry_Report = CurrentDb.QueryDefs("qry对账单")
  16.     str_SQL = Replace(qry_Report.SQL, ";", "")
  17.     '设置查询数据源
  18.     For i = LBound(arr_Number, 2) To UBound(arr_Number, 2)
  19.         qry_Report.SQL = str_SQL & " Where [Q0010_Summary List].供应商编号=" & arr_Number(0, i)
  20.         DoCmd.OutputTo acOutputReport, "对账单", acFormatPDF, CurrentProject.Path & "" & arr_Number(0, i) & "_对账单.pdf", False
  21.     Next
  22.     '重新设置查询SQL语句,以便下次使用
  23.     qry_Report.SQL = str_SQL
  24.     MsgBox "全部导出完毕"
  25. End Sub
复制代码




作者: tmtony    时间: 2015-11-30 18:16
2003就要自己想其它办法了:) 2007以后就方便好多了
作者: sdgtlcy    时间: 2016-1-9 22:33
你好,07的打开显示不识别的数据库格式,请问怎么回事?
作者: roych    时间: 2016-1-10 09:30
sdgtlcy 发表于 2016-1-9 22:33
你好,07的打开显示不识别的数据库格式,请问怎么回事?

版本问题?我是在2010版本里设计的。
作者: 522650696    时间: 2016-4-14 17:02

强!,谢谢分享!
作者: wuwu200222    时间: 2020-11-19 16:09
学习




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3