[英]Crystal Reports Else If statement
我不知道为什么这个if语句不起作用。 我有一个DateTime字段DATEFROM和一个String参数(必须为String)periodEnd。 我想根据这两个日期之间有1、2、3年或更长时间的差异来计算百分比。 当我使用此公式时,将得到“ 100%”或“-”,而从没有其他两个选项。 就像CR计算第一个IF一样,如果为true,则为:“ 100%”,但是如果为false,则它从不检查其余的Ifs,并直接处理Else
StringVar percentage:="";
If (cDate({?periodEnd})-{TABLE.DATEFROM})<=1 Then
percentage:="100%"
Else If (cDate({?periodEnd})-{TABLE.DATEFROM})<=2 Then
percentage:="66%"
Else If (cDate({?periodEnd})-{TABLE.DATEFROM})<=3 Then
percentage:="33%"
Else
percentage:="-"
任何想法?
a)我假设您已经确定自己的periodend
格式与cdate
解释的格式匹配?
如果仅减去它们,则默认情况下,Crystal会返回之间的天数。
一年可以做的两种方法:
datediff("yyyy",cDate({?periodEnd},{TABLE.DATEFROM})
要么
year(cDate({?periodEnd})-year({TABLE.DATEFROM})
b)当您的{TABLE.DATEFROM}
大于cDate({?periodEnd}
且结果为负数时,您也毫无疑问地得到了解释。
不确定以下是否是您想要的行为,但我将其提供给您参考
ABS(datediff("yyyy",cDate({?periodEnd},{TABLE.DATEFROM}))
**请确保您检查了帮助文件中的datediff代码(例如“ yyyy”等),因为它们不是很本能的,当您认为自己使用的是明显的代码时,可能会使您绊倒
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.