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

Posted

技术标签:

【中文标题】使用 VBA 的增量发票编号 - 访问【英文标题】:Incremental Invoice Number using VBA - Access 【发布时间】:2015-06-08 19:25:27 【问题描述】:

我的部分访问应用程序会开具发票。我有一个发票编号表,其中包含一个字段“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 附加到发票号?也许在查询中添加一个类似于您需要的字段(我不确定如何对它们进行分组)。还有一些属性可以选择“保留在一页上”,但我不确定是否那会起作用的。 在打印前将发票编号应用于您的发票记录。 您的增量在页眉中。尝试将其添加到报告标题或 onload 事件中。 Gene - 如果我这样做,后续页面不会有发票编号,我会在一份报告中打印多张发票。 Gustav - 你的想法有一些优点,但问题是我打印每个报告的不同 ClientID 和 ProjectNum 的多次迭代。如果我从绑定的表单生成发票,你的想法会起作用。 您似乎没有在任何地方存储发票编号。因此,即使这可行,当您针对相同的参数运行相同的报告两次时,您将获得两个发票编号。 【参考方案1】:

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

首先,添加一个不可见的文本框,用于对所有报告的记录进行计数:

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

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

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

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

Control Source: =[intInvoiceNum] + [RunningCount]
Running Sum: No
Name: IncrementalInvoiceNum
Visible: Yes

您可能想知道,为什么前两个不可见控件?使用Running Sum: Over All 的原因将包括报告每条记录的计数和发票编号(例如,1 + InvoiceNum - 第一条记录;1 + 1 + InvoiceNum + InvoiceNum - 第二条记录...)

【讨论】:

冻糕你是半神。有用!!!只是表明 vba 并不总是最好的解决方案。谢谢!!!

以上是关于使用 VBA 的增量发票编号 - 访问的主要内容,如果未能解决你的问题,请参考以下文章

如何将增量发票编号放入 DatabaseReference

在 ms 访问中使用“IF”和“DLookup”

使用格式化访问查询导出到 Excel

如何使用 VBA 在 ms 访问表单中创建自定义自动编号? [关闭]

访问 VBA 从月份数获取季度

VBA访问需要在保存新记录之前获取自动编号