在If语句中访问DateDiff

时间:2014-10-28 19:40:07

标签: database if-statement report ms-access-2007 datediff

我在Access 2007中工作。我正在尝试做一些事情,我认为语法是问题,但我尝试的所有内容都不起作用。

我需要在报告中提供一个文本框,以便为我提供超过30天的记录计数,以及另一个相同但60天的记录。所以基本上"如果记录超过今天的30天,请计算,否则不要。"

我做过的最好的事情就是:

=Count(IIf(DateDiff("d",[StartDate],Date())>30,"")) 

[StartDate]是记录放入数据库的日期,Date()是今天我希望的。

它返回一个数字,但数字不正确。我已经让DateDiff在IF语句之外工作了,所以我认为这是我的语法,但是......我做错了什么?有更简单的方法吗?我对可用功能的了解非常有限,基本上没有VBA知识。

非常感谢!!!

2 个答案:

答案 0 :(得分:0)

你试过吗

=Sum(IIf(DateDiff("d",[StartDate],Date())>30, 1, 0)) 

答案 1 :(得分:0)

看起来你理解了iff()

例如iff(表达式,action1,action2)表示:

if expression=true then
  do action1
else
  do action2
end if

所以你所做的基本上是计算dateiff返回的内容而不计算它匹配的记录!
如果你在iff()的第一个动作中有了count(),那么你的方法是正确的。

无论如何,我有更好的解决方案......

在报告中创建以下功能(编辑“MY_TABLE”以匹配您的表格名称:

Private Function MyCount(Optional intDays As Integer = 30) As Long

    MyCount = DCount("*", "MY_TABLE", "DateDiff('d', [StartDate], Date()) > " & intDays)

End Function

然后您只需将文本框填充为

过去30天计算:
    MyTextbox.value = MyCount

计算过去60天:
    MyTextbox.value = MyCount(60)