2010-05-11 87 views
1

我在我的表中有3個字段:開始,結束(日期)和長度(數量,可能是空白)。
我的目標是使用的開始和長度到底哪裏不存在計算的結束日期...開關導致#error,爲什麼以及如何修復它

我:

SELECT Switch((g.length<>0) And IsDate(g.end),DateAdd("m",g.length,g.start)) AS field FROM table g 

如果沒有開始,結束或長度,Access顯示空白- 這可以。 如果沒有結束,但開始和長度都可以,則會顯示計算日期 - 再次正常。 但 如果沒有結束,或長度,但開始存在,接入顯示器#錯誤

我不明白爲什麼,不能修復,請幫忙!

回答

0

如果沒有結束,而是開始和長度確定,計算日期顯示

你肯定那點?當我嘗試使用開始和長度的值進行查詢時,但沒有結束值時,我得到「field」的空值。

而且,你調用DateAdd函數,當這個條件爲真:

g.length<>0) And IsDate(g.end) 

爲了該條件是真實的,g.end必須已經包含有效日期......但我以爲你沒有想要執行計算,當你已經有一個g.end的值。我很困惑。

讓我們嘗試一種不同的方法。如果這個查詢返回你想要的,很好。如果不幫助我們理解它爲什麼不正確。

SELECT 
    d.start, 
    d.end, 
    d.length, 
    IIf(IsDate(d.end), d.end, 
    IIf(Nz(d.length)>0, DateAdd("m", d.length, d.start), Null)) AS field 
FROM table AS d; 
+0

是的,我明白你的意思了。 IIf解決方案看起來更加優雅,並且完美無瑕!也許我應該放下深夜! 謝謝! – Chris 2010-05-12 16:40:37

相關問題