我有一个关于Microsoft Access 2010的问题。我正在处理一个继承的投诉数据库,并且我被要求提供一份报告,概述投诉有多长时间/或者是活跃的。
使用以下内容,我可以计算投诉开始时和投放结束时的差异,并显示活动天数。
DaysActive: DateDiff("d",[COMPLAINTS]![DateRcvd],[COMPLAINTS]![DateClosed])
我的问题是,如果投诉没有结束,我就不会获得退还的价值。有没有办法修改表达式,以便如果DateClosed为空,它将使用当前日期?
答案 0 :(得分:2)
假设这是一个查询表达式,db引擎支持返回今天日期的Date()
函数。因此,当IIf
为空时,您可以使用Date()
表达式为DateClosed
提供DateClosed
DateDiff("d", COMPLAINTS.DateRcvd, IIf(COMPLAINTS.DateClosed Is Null, Date(), COMPLAINTS.DateClosed))
如果始终在Access会话中运行查询,则可以使用Nz
代替IIf
...
DateDiff("d", COMPLAINTS.DateRcvd, Nz(COMPLAINTS.DateClosed, Date()))
请注意,Nz
是一个VBA函数,并且db引擎直接支持IIf
,因此理论上IIf
应该更快。但是在你的背景下可能无法察觉到这种差异。
答案 1 :(得分:0)
尝试使用它。
DaysActive: DateDiff("d",Nz(COMPLAINTS.DateRcvd, Date()),[COMPLAINTS]![DateClosed])
Nz
将检查日期是否可用,如果没有,它将使用DATE()
函数替换今天的日期。