我确信这很简单,因为我在开始这项工作时遇到了麻烦。我使用表单为客户开具发票,其中包括[Billing_Month]字段。我想要完成的是这个。当我创建新发票时,[Billing_Month]将查看最后创建的发票(使用带有DMax的[Invoice_#]?),并填写发票[Billing_Month]
的值我原本想要使用:Billing_Month = DMax(“Billing_Month”,“frmInvoices”),但这并没有专门为我提供最后一张发票,它只会找到最高的Billing_Month,这是一个文本字段。
我原本想要使用:Billing_Month = DLookup(“Billing_Month”,“frmInvoices”),但这并没有让我获得最后一张发票。
答案 0 :(得分:0)
我会为此使用自定义函数 - 假设基础表名为tblInvoices
:
Function GetBillingMonthOfLatestInvoice()
Const SQL = "SELECT TOP 1 Billing_Month FROM tblInvoices ORDER BY [Invoice_#] DESC"
Dim RS AS DAO.Recordset
Set RS = CurrentDb.OpenRecordset(SQL)
If RS.EOF Then
GetBillingMonthOfLatestInvoice = Null
Else
GetBillingMonthOfLatestInvoice = RS(0)
End If
End Function
上面的代码可以推广到返回其他相关字段,如下所示:
Function GetValueForLatestInvoice(FieldToLookUp As String)
Dim RS As DAO.Recordset, SQL As String
SQL = "SELECT TOP 1 " + FieldToLookUp + " FROM tblInvoices ORDER BY [Invoice_#] DESC"
Set RS = CurrentDb.OpenRecordset(SQL)
If RS.EOF Then
GetValueForLatestInvoice = Null
Else
GetValueForLatestInvoice = RS(0)
End If
End Function
要使用,请将代码复制到新的标准模块,然后对于表单上的每个相关文本框,将“属性”窗口中的“默认值”属性设置为以下内容:
=GetValueForLatestInvoice("Billing_Month")
这将是包含结算月份值的文本框;对于持有结算年度的人,您将使用
=GetValueForLatestInvoice("Billing_Year")
答案 1 :(得分:0)
您可以同时使用DLookup()
和DMax()
的组合:
DLookup("Billing_Month","tblInvoices","[Invoice_#]=" & DMax("[Invoice_#]","tblInvoices"))