我的表中有3个字段:开始,结束(日期)和长度(数字,可能是空白) 我的目标是使用不存在结束的开始和长度来计算结束日期......
我有:
SELECT Switch((g.length<>0) And IsDate(g.end),DateAdd("m",g.length,g.start)) AS field FROM table g
如果没有开始,结束或长度,Access显示空白 - 这很好。 如果没有结束,但是开始和长度都没问题,则显示计算的日期 - 再次罚款。 但 如果没有结束或长度,但存在启动,则访问显示#Error
我不明白为什么,也无法解决,请帮忙!
答案 0 :(得分:0)
如果没有结束,但是开始和长度都可以,则显示计算的日期
你确定这一点吗?当我使用start和length的值尝试查询但没有end值时,我得到“field”的Null。
此外,当此条件为True时,您正在调用DateAdd函数:
g.length<>0) And IsDate(g.end)
为了使该条件为True,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;