这是用Access编写的。我有这个子。这是为了通过记录集打印出单个页面,根据发票号单独命名:
Sub printPdfPages(formName As String, fileName As String)
''print each record into a separate pdf file, named according to invoice number
Dim rs As DAO.Recordset
Dim whereCondition As String
Dim saveName As String
Set rs = CurrentDb.OpenRecordset(fileName) ''can also pass SQL in as a String
Do While Not rs.EOF
saveName = rs!invoiceNumber & ".pdf"
whereCondition = "[invoiceNumber]=" & rs!invoiceNumber
'' MsgBox whereCondition
DoCmd.OpenForm formName, acNormal, , whereCondition
DoCmd.OutputTo acOutputForm, formName, acFormatPDF, saveName, False, "", , acExportQualityPrint
rs.MoveNext
Loop
DoCmd.Close acForm, formName
rs.Close
Set rs = Nothing
End Sub
现在我想修改它,以便它将采用开始发票号和结束发票号。 然后转到开始发票的记录,并在开始和结束之间打印任何内容。
我该怎么做?我应该使用什么方法?有什么想法吗?
答案 0 :(得分:0)
首先,使用SQL字符串中的order by子句按发票编号对记录集查询进行排序:ORDER BY invoiceNumber
其次,您可以在循环之前使用MoveLast and MoveFirst方法:
rs.MoveLast
rs.MoveFirst
Set rs = CurrentDb.OpenRecordset(fileName)
Do While Not rs.EOF
...
除此之外,不要将表单保存为文档。由于Access Reports打印设置,页边距和页面结构,它们是包括PDF输出在内的任何文档最终用途的更好对象。