在表中查找记录

时间:2015-07-22 22:36:58

标签: vba ms-access access-vba

这是用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

现在我想修改它,以便它将采用开始发票号和结束发票号。 然后转到开始发票的记录,并在开始和结束之间打印任何内容。

我该怎么做?我应该使用什么方法?有什么想法吗?

1 个答案:

答案 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输出在内的任何文档最终用途的更好对象。