我有一份清关表及其到期日。如果许可证已过期,我希望它是红色的,如果它在6个月内过期我想要它是琥珀色,如果它在6个月以上的绿色到期并且如果它尚未被批准(因此不会但是有一个失效日期)然后是黑色。
我将文本默认为黑色,然后
RED
[C_ExpiryDate]<Now()
AMBER
DateDiff("m",[C_ExpiryDate],Now())<6 And [C_ExpiryDate]>Now()
GREEN
DateDiff("m",[C_ExpiryDate],Now())>6 And [C_ExpiryDate]>Now()
这似乎有几个不同的问题,从我所知道的红色工作正常。但其他两个似乎处理得很差,例如2015年9月6日的清关是琥珀色(今天是2014年7月3日,所以这应该是绿色的)。类似于2017年3月5日,我认为它只关注一年中的月份,但我不太清楚如何更好地处理这个问题。
不确定是否可能更容易默认为绿色,也许可以编写类似
的内容[C_ExpiryDate] = ""
但这似乎没有做任何事情,即使有一个空白日期,一切都会变成绿色。单引号也类似。
任何赞赏的建议......
答案 0 :(得分:4)
您使用的是哪个版本的MS Access?这对我有用:
答案 1 :(得分:2)
你写它的方式正在发生(我用#06/Sept/2015#
代替[C_ExpiryDate]
以保持你的榜样)
红?
#06/Sept/2015#<Now() --> False
琥珀?
DateDiff("m",#06/Sept/2015#,Now())<6 And #06/Sept/2015#>Now() --> True
不评估绿色
问题在于您首先拥有更大的日期,而最后的日期更短。切换它们。
或者,或者,既然您正在检查[C_ExpiryDate]>Now()
,您可以获取它们的绝对值,而不用担心订单。
#06/Sept/2015# < Now() --> False (Red)
DateDiff("m",Now(),#06/Sept/2015#) < 6 And #06/Sept/2015# > Now() --> False (Amber)
DateDiff("m",Now(),#06/Sept/2015#) > 6 And #06/Sept/2015# > Now() --> True (Green)
但你没有equal to 6 months
条件。你可以考虑一下。