【问题标题】:Axess expression nested Iif() statement syntax errorAxess 表达式嵌套的 Iif() 语句语法错误
【发布时间】:2013-07-11 19:18:38
【问题描述】:

我在 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])并没有改变问题。

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

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

我还尝试格式化我的代码,使其易于阅读。

【问题讨论】:

    标签: sql ms-access


    【解决方案1】:

    在我看来,双引号很古怪。访问特别关注这一点。删除“Old Backlog”并重新输入。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多