我在 Access 中工作,我需要用标志指定某些记录,具体取决于记录是否已在表单的日期窗口内生成或订购。我对此表达式有疑问(我正在使用设计视图来执行此操作),它的开头是这样的:
Designation:
IIf([InvoiceList.PurchaseOrderDt] Between [Forms]![Date Range]![StartDate]
And [Forms]![Date Range]![EndDate],
"New Backlog",
IIf(([InvoiceList.PurchaseOrderDate] < [Forms]![Date Range]![StartDate])
AND (([InvoiceList.FinalBillDate] Is Null)
OR ([InvoiceList.FinalBillDate] > [Forms]![Date Range]![StartDate])),
“Old Backlog”,
””)
)
我收到一个语法错误(“您输入的表达式语法无效,您可能输入了一个没有运算符的操作数”),并Backlog"
在第二个语句中突出显示。因为我对 access 和 SQL 有点陌生,所以我决定进一步嵌套 IIF 语句,并去掉 AND 和 OR 运算符,因为我不确定在 Access/SQL 中如何处理它们。变成了以下内容:
Designation:
IIf([InvoiceList.PurchaseOrderDt] Between [Forms]![Date Range]![StartDate]
And [Forms]![Date Range]![EndDate],
"New Backlog",
IIf([InvoiceList.PurchaseOrderDt] < [Forms]![Date Range]![StartDate],
IIf([InvoiceList.FinalBillDate] Is Null,
“Old Backlog”,
IIf( [InvoiceList.FinalBillDate] > [Forms]![Date Range]![StartDate],
“Old Backlog”,
””)
)
,””)
)
但我有同样的错误。从第二个代码中可以看出,第一个“旧积压”Backlog"
仍然突出显示,而不是第二个。这使我认为使用“Is Null”可能存在问题,但是将表达式更改为IsNull([InvoiceList.FinalBillDate])
并没有改变问题。
还值得注意的是,删除代码的突出显示部分消除了错误,但我需要第二个指定。
我最后的想法是它与"
我正在使用的东西有关。我期待听到您的意见。
我还尝试格式化我的代码,使其易于阅读。