繁体   English   中英

Crystal报告其他If语句

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM