2013-07-11 78 views
0

我在Access中工作,我需要用标志指定某些记录,具体取决于记录是否已在表单中的日期窗口内生成或排序。我有这个表达(我使用设计视图做到这一点)的麻烦,开始是这样的:Axess表达式嵌套Iif()语句语法错误

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”, 
       ””) 
      ) 
     ,””) 
    ) 

但我有同样的错误。从第二个代码可以看出,第一个“旧积压”的Backlog"仍然是突出显示的,而不是第二个。这导致我认为这可能是使用'空'的问题,但将该表达式更改为IsNull([InvoiceList.FinalBillDate])并未改变问题。

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

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

我也试着格式化我的代码,以便阅读。

回答

0

在我看来,双引号是扭曲的。访问是特别关注的。删除“旧积压”并重新输入。

+0

上帝该死,就是这样 – GMoany