If statement Crystal报告Else If语句

If statement Crystal报告Else If语句,if-statement,crystal-reports,If Statement,Crystal Reports,我不明白为什么这个if语句不起作用。 我有一个DateTime字段DATEFROM和一个字符串参数(必须是String)periodEnd。 我想计算百分比取决于这两个日期是否有1年、2年、3年或更长时间的差异。 当我使用这个公式时,我得到的是“100%”或“-”,而不是其他两个选项。这就像CR计算第一个IF,如果它是真的,那么“100%”但是如果它是假的,它就不会检查其余的IF,然后直接转到Else StringVar percentage:=""; If (cDate({?periodEnd

我不明白为什么这个if语句不起作用。 我有一个DateTime字段DATEFROM和一个字符串参数(必须是String)periodEnd。 我想计算百分比取决于这两个日期是否有1年、2年、3年或更长时间的差异。 当我使用这个公式时,我得到的是“100%”或“-”,而不是其他两个选项。这就像CR计算第一个IF,如果它是真的,那么“100%”但是如果它是假的,它就不会检查其余的IF,然后直接转到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:="-"
StringVar百分比:=”;
如果(cDate({?periodEnd}){TABLE.DATEFROM})a),我假设您已经确保您的
periodEnd
格式与
cDate
解释的内容匹配?
如果只需减去它们,Crystal默认情况下会返回两者之间的天数。
一年中有两种方法可以做到:

datediff("yyyy",cDate({?periodEnd},{TABLE.DATEFROM})

b) 毫无疑问,当
{TABLE.DATEFROM}
大于
cDate({?periodEnd}
时,您也解释了这一点,并且您得到了一个否定的结果?
我不确定下面的行为是否是你想要的,但我想告诉你

ABS(datediff("yyyy",cDate({?periodEnd},{TABLE.DATEFROM}))
**请务必查看帮助文件中的datediff代码(“yyyy”等),因为这些代码并非出于本能,当您认为使用的是明显的代码时,可能会绊倒您 如果只需减去它们,Crystal默认情况下会返回两者之间的天数。
一年中有两种方法可以做到:

datediff("yyyy",cDate({?periodEnd},{TABLE.DATEFROM})

b) 毫无疑问,当
{TABLE.DATEFROM}
大于
cDate({?periodEnd}
时,您也解释了这一点,并且您得到了一个否定的结果?
我不确定下面的行为是否是你想要的,但我想告诉你

ABS(datediff("yyyy",cDate({?periodEnd},{TABLE.DATEFROM}))

**确保检查帮助文件中的datediff代码(“yyyy”等)因为他们不是很本能,当你认为你使用的是明显的方法错误时,他们可能会绊倒你。什么是精确的减法…年或月或日…你的要求是什么错误的…什么是精确的减法…年或月或日…你的要求是什么谢谢你!我尝试了DateDiff函数。嗯..如果我没什么麻烦,你能告诉我如何检查变量“periodend”的格式吗?我的日期是“DD/MM/YYYY”我只是用同样的格式为我的变量键入了一个日期。不知道你的意思是什么…你可以简单地把它放在报告正文中,然后运行报告就会显示出来。为了理智起见,当我的头无法解释帮助文件时,我会按原样把它放在旁边,然后在它旁边是cdate之后的结果(或者你正在使用的任何东西)转换,以便我可以看到发生了什么误解(确保您至少检查了一个日期超过13的日期,以便您绝对确定。还可以显示公式
totext(年(cdate({?periodEnd})),0)+“/”+totext(月(cdate({?periodEnd})),0)+“/”+totext(天(cdate({?periodEnd})),0)
。谢谢!我尝试了DateDiff函数。嗯。。如果不麻烦的话,您能告诉我如何检查变量“periodend”的格式吗?我的日期是“DD/MM/YYYY”,我只是为变量键入了一个格式相同的日期。不确定您的意思。。。你可以简单地把报告的主体放进去,运行报告就会显示出来。为了理智起见,当我的头无法解释帮助文件时,我会按原样放,然后在cdate(或您正在使用的任何东西)转换后的结果旁边,这样我就可以看到发生了什么误解(确保至少选中一个日期大于13的日期,以便绝对确定。还可以显示公式
totext(年(cdate({periodEnd}))、0)+“/”+totext(月(cdate({periodEnd}))、0)+“/”+totext(天(cdate({periodEnd}))、0)