Axess表达式嵌套了Iif()语句语法错误

时间:2013-07-11 19:18:38

标签: sql ms-access

我在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"。因为我对访问和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”,
                ””)
           )
       ,””)
    )

但我有同样的错误。第二个代码的一个可能的见解是第一个“Old Backlog”的Backlog"仍然突出显示,而不是第二个。这让我觉得使用'Is Null'可能会出现问题,但将表达式更改为IsNull([InvoiceList.FinalBillDate])并没有改变问题。

值得注意的是,删除代码中突出显示的部分可以消除错误,但我需要第二次指定。

我最后的想法是它与我正在使用的"有关。我期待听到您的意见。

我还尝试格式化我的代码,以便它易于阅读。

1 个答案:

答案 0 :(得分:0)

在我看来,双引号是搞怪的。访问是特别的。删除“Old Backlog”并重新输入。