2013-07-11 86 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