2010-05-11 85 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

相关问题