簡體   English   中英

MS Access:舍入IIf語句時出錯

[英]MS Access: Error When Rounding IIf Statement

當IIf條件為false時,此Round語句將產生錯誤,而在IIf條件為true時將起作用。

我在SQL方面的經驗非常有限。 我從一個退休的同事那里繼承了我正在嘗試調整的Access DB,所以我一直在進行故障排除和語法拼寫方面的工作。

這是我要開始工作的Round語句:

Round(IIf([Manual] is Not Null,[Manual]/180,[MemberDays]/180),3) AS [%ADM]

故障排除編輯:

Round(IIf([Manual] is Not Null,180/180,100/180),3) AS [%ADM]

手動字段是通過以下語句創建的(不確定是否相關,但已確定我會添加):

IIf(([2-billing-Prep Export]!wth_date) Is Not Null,[MemberDays]-[Session Cum]+1,"")) AS Manual

預期的結果:如果Manual不為null,則%ADM將填充Manual / 180至3 decpts。 如果Manual為null,則%ADM將填充MemberDays / 180至3 decpts。

實際結果:如果Manual不為null,則該語句有效,但是Manual為null時,%ADM填充#ERROR。 Google告訴我這是因為計算中的字段之一為null ...但是MemberDays絕不會為null。

故障排除編輯的結果:%ADM就像條件始終為真一樣填充,即使對於“手動”為或看起來為空的記錄也是如此。 我很困惑,因為在進行故障排除編輯之前,條件似乎可以識別“手冊”中的空值/非空值。

IIf表達式中,對真值部分和假值部分都進行了評估,如果其中之一不能被評估,則會返回錯誤。 在您的情況下,您認為Manual有時可以為Null ,但我不這么認為...因為在ManualIIf公式中,當它應返回Null時,您返回一個空字符串。 空字符串不能除以數字。 因此:

將“ Manual字段的表達式更改為

IIf(([2-billing-Prep Export]!wth_date) Is Not Null,[MemberDays]-[Session Cum]+1,Null)) AS Manual

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM