水晶报告公式:IsNull + Iif
在这个网站上,这里和那里有关于这个问题的答案有一些提示,但我提出了一个稍微不同的问题。水晶报告公式:IsNull + Iif
Crystal Reports如何证明此语法不起作用?
Trim({PatientProfile.First}) + " "
+ Trim(Iif(
IsNull({PatientProfile.Middle})
, Trim({PatientProfile.Middle}) + " "
, " "
)
)
+ Trim({PatientProfile.Last})
我知道解决的办法是
If IsNull({PatientProfile.Middle}) Then
Trim({PatientProfile.First})
+ " " + Trim({PatientProfile.Last})
Else
Trim({PatientProfile.First})
+ " " + Trim({PatientProfile.Middle})
+ " " + Trim({PatientProfile.Last})
但我们应该如何找出我们不能使用第一个版本?
为ISNULL文档说
- 评估了当前记录中指定的字段,如果该字段包含空值
返回TRUE和IIF给
- [返回]如果表达式为True,则truePart,如果expression为False,则为falsePart。返回值的类型与truePart和falsePart的类型相同。
我想,如果你盯着这行约“类型的返回值”你可以得到它,但是......
我觉得CR会评估综合投资框架真假零件。因为您有“Trim({PatientProfile.Middle})”部分,那么将评估aganst null值,CR公式评估程序看起来只是失败。
是的,但我试图找出它在血腥文档中的位置,而不是让所有遇到Google的人都能找到答案。毕竟,我们中有一两个人知道代码是如何工作的... – SarekOfVulcan 2009-03-04 17:31:33
来自CR帮助: 在返回结果之前评估IIF函数的每个参数。因此,使用IIF时应注意不良副作用。例如,如果falsePart导致除零,即使表达式为True,也会发生错误,因此返回truePart。 – Arvo 2009-03-04 22:25:53
Crystal Reports如何证明此语法不起作用?
我怀疑有任何地方在整个宇宙中记录并不在Crystal Reports工作一切足够大......
大声笑,感谢让我在这个美好的星期五笑了) – contactmatt 2012-06-08 20:18:45
我知道我多年来就这一个晚了,但我来了在试图弄清楚同样的事情的同时,在这个问题上。有趣的是,我甚至无法在Crystal Reports文档中找到答案,而是在link to IBM中找到答案。
如果您使用Crystal Reports 8.x或10.x,则和IIF
不能一起使用。从网站:
原因
有在Crystal Reports 8.x和10.x中的缺陷,其防止在上式无法正常运作。 'IIF'和'IsNull'命令不能一起工作,包括尝试使用“Not”修改IsNull命令;例如,IIF(Not IsNull())。
解决问题
的解决方法是使用一个 “IF-THEN-ELSE” 语句。例如,
If IsNull({~CRPT_TMP0001_ttx.install_date}) Then "TBD" Else "In Progress"
所以,如果你正在使用CR 8.x的或10.x的(我们是),你的运气了。当您将多个字段连接在一起时,它会变得非常有趣,其中一个字段可能为NULL。
试试这个:
currencyvar tt;
currencyvar dect;
tt :={ship.comm_amount};
dect := tt - Truncate(tt);
tt := truncate(tt);
dect := dect * 100;
if dect = 0 then
UPPERCASE('$ ' + ToWords (tt,0)) + ' ONLY'
else
UPPERCASE('$ ' + ToWords (tt,0) + ' And ' + ToWords(dect,0)) + ' ONLY ';
我没有CRXI今天简洁,但是并不了解的第一个工作?它是否会让间距错误(这是代码中的逻辑错误 - 您有一个额外的Trim())或者以其他方式失败? – Stobor 2009-02-10 22:58:57
对于.Middle为NULL的记录,CR无法评估Trim(.Middle)中的字符串值,并且决定Iif的值为NULL,即使我在那里有显式测试。 – SarekOfVulcan 2009-03-04 17:30:29