我在Access 2007中工作。我正在尝试做一些事情,我认为语法是问题,但我尝试的所有内容都不起作用。
我需要在报告中提供一个文本框,以便为我提供超过30天的记录计数,以及另一个相同但60天的记录。所以基本上"如果记录超过今天的30天,请计算,否则不要。"
我做过的最好的事情就是:
=Count(IIf(DateDiff("d",[StartDate],Date())>30,""))
[StartDate]是记录放入数据库的日期,Date()是今天我希望的。
它返回一个数字,但数字不正确。我已经让DateDiff在IF语句之外工作了,所以我认为这是我的语法,但是......我做错了什么?有更简单的方法吗?我对可用功能的了解非常有限,基本上没有VBA知识。
非常感谢!!!
答案 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)