使用 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 的增量发票编号 - 访问的主要内容,如果未能解决你的问题,请参考以下文章