使用VBA的增量发票编号 - 访问

时间:2015-06-08 19:25:27

标签: vba ms-access

我的部分访问应用程序会开具发票。我有一个发票号码表,其中包含一个字段“InvoiceNum”。在我的发票报告中,我有以下代码:

 
Private Sub Report_Open(Cancel As Integer)
    'lookup invoice number when invoice opens 
    intInvoiceNum = Nz(DLookup("InvoiceNum", "tblInvoiceNum"), 0)
End Sub`

Private Sub PageHeaderSection_Format(Cancel As Integer, FormatCount As Integer)
    'Incrementally add one (1) to the invoice number for every page of in the report
    Me.txtInvoiceNum = intInvoiceNum
    intInvoiceNum = intInvoiceNum + 1
End Sub`

Private Sub Report_Close()
    'Update tblInvoiceNum with the last invoice number in the report
    db.Execute ("UPDATE InvoiceNum SET InvoiceNum = " & intInvoiceNum) 
End_Sub`

问题:我的报告以groupby ClientID和ProjectNum打开。多张发票打印在同一报表上。如果任何发票溢出到第二页,则格式代码再次运行,将增量发票号插入第二页。我怎样才能防止这种情况发生?

1 个答案:

答案 0 :(得分:0)

考虑在报表的页眉部分中使用带有InvoiceNum的Running Sum控件。无需VBA。

首先,添加一个不可见的文本框,用于在所有报告的记录上运行计数,其中包括:

AGENT_AGENT_ID

其次,为InvoiceNum的DLookUp添加另一个不可见的文本框:

Control Source: =1
Running Sum: Over All
Name: RunningCount
Visible: No

最后,为前两个控件的总和添加一个可见文本框,作为增量发票编号:

Control Source: =DLookup("InvoiceNum", "tblInvoiceNum")
Running Sum: No
Name: intInvoiceNum
Visible: No

您可能想知道,为什么前两个看不见的控件?使用Control Source: =[intInvoiceNum] + [RunningCount] Running Sum: No Name: IncrementalInvoiceNum Visible: Yes 的原因将包括报告的每条记录的计数和发票号(例如,1 + InvoiceNum - 第1条记录; 1 + 1 + InvoiceNum + InvoiceNum - 第2条记录......)