2012-07-16 43 views
1

我期待根据客户ID将多页访问报告拆分为单个pdf文件,然后根据客户名称(或ID)保存这些pdf文件。根据客户ID将多页MS Access报告拆分为单个pdf文件?

我已经研究过将报告“打印”/“转换”为一个大型pdf文件并将其拆分到那里,但一些客户发票跨越两个+页面,因此一页一页地分割一个pdf文件不会工作。

任何帮助将不胜感激;如果任何人需要更多的澄清任何事情,请不要犹豫,让我知道。

回答

1

使用Access 2007(请参阅下面的注释)或更高版本可以很容易。

使用WhereCondition参数打开您的报告以将记录源限制为特定客户。

DoCmd.OpenReport "rptFoo", acViewPreview, , "Customer_ID = 1" 

然后使用OutputTo将其保存为带有您提供的文件名的PDF。

DoCmd.OutputTo acOutputReport, "", acFormatPDF, "Spacely_Sprockets.pdf" 

之后关闭报告。

DoCmd.Close acReport, "rptFoo" 

您可以创建它会显示Customer_IDCustomer_Name数据的记录过程,然后使用这些命令3从各行的值。

如果您的Access版本比2007年早,那么您必须告诉我们您用于创建PDF文件的方法。

注意:对于Access 2007,Office Service Pack 2提供了Built-in Save As PDF/XPS support

2

PDF打印可用的MS Access 2010年,2007年,您可以安装微软的附加:前Print, share, and protect files in the PDF and XPS file formats

对于版本2007,您可以使用:

  • 斯蒂芬LeBan的ReportToPDF只包含两个DLL,但仅适用于MS Access

  • CutePDF是免费且易于使用的。

  • PDFCreator也是免费的,可以用VBA实现完全自动化(虽然我最近没有使用过它,我相信这个功能仍然可用)

  • 任意数量的付费PDF创造者。

的自2003 version(也OpenReport 2010

WHERE论据的OpenReport已提供给打印所有客户的一份报告,2003年版,2007年和2010年,您可以通过相关文件和

Dim rs AS DAO.Recordset 
Set rs = CurrentDB.OpenRecordset("SELECT DISTINCT CustimerID FROM Invoices") 

    Do While Not rs.EOF 
     ''expression.OpenReport(ReportName, View, FilterName, 
     ''  WhereCondition, WindowMode) -- 2010 has OpenArgs 

     DoCmd.OpenReport "Invoices",<..>,,"CustomerID=" & rs!CustomerID 
     ''OutputTo or other relevant code 

     rs.MoveNext 
    Loop 

获取PDF然后取决于您的版本和安装的工具。例如,如果您正在使用PDFCreator或CutePDF,则可以使用acViewNormal作为视图。 PDFCreator设置将允许您提前分配一个文件名,对于CutePDF,您将不得不填写一个文件名。对于Access 2007和2010,您可以使用OutputTo,如前所述,所以acViewPreview是最好的。

要通过电子邮件发送2007年和2010年的报告,您可以使用SendObject。对于较早的版本,您将需要更多的代码。最简单的选择可能是自动化Outlook。

相关问题