背景
- 我试图做我的报告的细节排一些好看的验证。
- 我有几个公式命名为断言语句,如果他们失败的测试和真正的,如果他们传递返回false。
目标
- 我想创建一个存储“违反规则”数组,然后将它们显示在一个领域在行末,一个叫“破规则”标题下
我一直这样做的远
- 创建了一个阵列并初始化其作为报告报头中的空字符串数组
- 创建的公式做评估每个规则的,增量的阵列,且添加破规则号(这是重复的码对于每个规则,没有什么特别的)。 这被添加到我上面的信息显示抑制的细节部分。
- 创建一个公式,是加入碎阵列规则的元件。 这是与我的详细信息字段一同显示的公式。
- 创建一个公式来设置错误阵列清空规则。 这正好处于被抑制细节部分后,我的细节显示。
问题
- 水晶似乎并没有允许“结束时,如果”语句,我可以找到。
- 因此,看来我只能评价一个如果一个公式中的语句,而不是整数倍。
- 这意味着我不能做多IFS,每一个规则。
示例代码
所述阵列(一式称为Init_StringVar_Array_RulesBroken)的创建:
//@Init
//This goes into the report header
WhilePrintingRecords;
//initializes the array of broken rules which we'll add to during details
StringVar Array RulesBroken;
"";
递增的阵列和添加的值(这是一种称为Increment_StringVar_Array_RulesBroken公式中)前三个规则评估的样品:
//@Increment
//Goes before the details section is displayed
//accesses the shared variable
WhilePrintingRecords;
StringVar Array RulesBroken;
//separate if statement for each assert statement
//01
if not {@Assert_01_IfCrewIsConstructionCrew_CBFlagShouldBeYesOrDirect} then
Redim Preserve RulesBroken[UBound(RulesBroken) + 1]; //extends the array to be able to hold one more item than it does currently
RulesBroken[UBound(RulesBroken)] := "01"; //adds the new string into the array
//02
if not {@Assert_02_IfCrewIsConstructionCrew_AndCBFlagIsDirect_WONumberShouldStartWithC} then
Redim Preserve RulesBroken[UBound(RulesBroken) + 1]; //extends the array to be able to hold one more item than it does currently
RulesBroken[UBound(RulesBroken)] := "02"; //adds the new string into the array
//03
if not {@Assert_03_IfCrewIsDesign_AndCBFlagIsDirect_WONumberShouldStartWithD} then
Redim Preserve RulesBroken[UBound(RulesBroken) + 1]; //extends the array to be able to hold one more item than it does currently
RulesBroken[UBound(RulesBroken)] := "03"; //adds the new string into the array
有任何想法吗?
- 是否有一个如果/那么/结束时,如果能在Crystal Reports?
- 如果没有,是有这样的事情在Crystal Reports解决方法? 我需要为每种多个公式,并确保他们放在其他或类似的东西后?
在此先感谢您的帮助!