我有三个类似于以下的表:
tblInvoices:Number | Date | Customer
tblInvDetails:Invoice | Quantity | Rate | Description
tblPayments:Invoice | Date | Amount
我创建了一个名为exInvDetails
的查询,向Amount
添加了tblInvDetails
列:
SELECT tblInvDetails.*, [tblInvDetails.Quantity]*[tblInvDetails.Rate]* AS Amount
FROM tblInvDetails;
然后我创建了一个查询exInvoices
,将Total
和Balance
列添加到tblInvoices
:
SELECT tblInvoices.*,
(SELECT Sum(exInvDetails.Amount) FROM exInvDetails WHERE exInvDetails.Invoice = tblInvoices.Number) AS Total,
(SELECT Sum(tblPayments.Amount) FROM tblPayments WHERE tblPayments.Invoice = tblInvoices.Number) AS Payments,
(Total-Payments) AS Balance
FROM tblInvoices;
如果tblPayments
中没有相应的付款,则字段为空,而不是0
。有没有办法强制生成的查询在此列中放置0
?
答案 0 :(得分:3)
使用nz()
功能,如nz(colName, 0)
中所示。这将返回colName
,除非它为null,在这种情况下它将返回第二个参数(在本例中为0)。
答案 1 :(得分:1)
我认为默认值喜欢Field
位置。例如,我的字段ID
位于tblEmpPCs
表中,我使用了以下条件。
IIf([Forms]![frmSearchByEmp]![cboTurul]="ID",[forms]![frmSearchByEmp]![Ezemshigch],[tblEmpPCs].[ID])
False值是Criteria的默认值。
我上传了查询条件的图片。它可能对你有帮助。