问题描述
我正在开发一个发票数据库,我正在努力从先前记录的一个字段 (CompletedToDate) 中检索多个值,以便在查询级别与计算字段 (PreviouslyCompleted) 中的新记录一起使用。对不起,这有点啰嗦,以确保我提供了足够的信息,希望它不会令人困惑!我所做的一些背景和历史:
- 发票数据库适用于咨询公司,他们每月提交发票。每张发票都针对一个项目,一个项目的设计阶段可以有多个行项目。
- 创建新发票时,系统会提示用户输入每个阶段的完成百分比,范围为 0 - 100%。它们作为记录存储在表中。
- 先前完成的字段是一个计算字段,它从先前的发票中提取完成百分比并显示在新发票上。
- 完成百分比与之前完成之间的差异以百分比形式提供该月的账单金额。我将其乘以合同金额以获得发票金额。
这是发票详细信息及其显示方式的图像: InvoicingDetails
发票明细是报表上的一个子表单,并使用名为 qryCurrentInvoiceIssuedDetails 的查询作为记录集。该查询显示特定项目的新发票的当前详细信息。所有的计算都是在表单级别完成的,查询只收集生成发票详细信息所需的数据库中的数据(稍后会详细说明我为什么这样做。它特别与 PreviouslyCompleted 字段相关)。
在图中的发票中,“Previously Completed”字段是子窗体上的一个计算文本框控件,它使用 DLookup 函数从以前的发票中提取 CompletedToDate 值,用作新发票上的 PreviouslyCompleted。 PreivouslyCompleted 中的表达式为:
=IIf(DCount("[InvoiceID]","[qryLastInvoiceIssuedDetails]")>0,DLookUp("[PercentComplete]","[qryLastInvoiceIssuedDetails]","[InvoiceDate] = #" & DMax("[InvoiceDate] ]","[qryLastInvoiceIssuedDetails]") & "# 和 [qryLastInvoiceIssuedDetails].[PhaseID] = " & [txtPhaseID]),0)
IIf 语句只是检查这是否是为该项目开具的第一张发票。
qryLastInvoiceIssuedDetails 查询是我用作发票详细信息子表单记录集的查询的副本,但我在 InvoiceDate 字段上有一个条件,它消除了当前发票详细信息。 DLookup 函数中的“Max”InvoiceDate 会过滤掉除最近开具的发票之外的所有其他发票。
信不信由你,文本框工作正常并显示正确的结果,但我的问题是我已经在表单级别完成了这项工作;所以试图总结所有发票详细信息的小计已经失控,因为 ContractAmount、PreviouslyCompleted 和 CurrentBilling 都是计算控件。 (我了解到您不能只对计算出的控件求和,您必须在 sum 函数中重复计算,这对我的 PreviouslyCompleted 表达式不起作用)。我确实在子表单的页脚中计算了控件以获取我的小计,但我似乎无法使其适用于 PreviouslyCompleted 控件。
我最初尝试将 PreviouslyCompleted 字段放在我的 qryCurrentInvoiceIssuedDetails 查询中,但 DLookup 一直为发票详细信息中的每个新记录返回相同的值。我需要它为发票详细信息中的每个阶段提取一个单独的值,但我认为 DLookup 不允许我这样做。我在论坛和帮助文件上阅读的所有内容似乎只想提取一个值,但我几乎总是有多个值。我试过在 VBA 中循环遍历记录集,但是因为计算是在表单级别完成的,所以也不起作用。我尝试进行不同的查询并加入它们,但由于我在每个查询上隔离了不同的记录集,因此将两者结合的查询变为空白。如果我可以将 PreviouslyCompleted 控件作为我查询中的一个字段,它确实可以简化事情,但我不知道该怎么做!
有人知道怎么做吗?除了 DLookup 之外,还有其他功能可以使用吗?我觉得我真的把看起来应该很简单的东西复杂化了,但我似乎无法弄清楚!!
任何帮助都会很棒!
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)