条件报告元素

可以使用 if 语句有条件地显示或隐藏报告中的各项元素。 可以通过在起始 ${if expression} 占位符中键入表达式来使用 if 语句,其中 ${/} 表示条件部分的结尾。 以下是一些可用于显示或隐藏部分报告的 if 语句示例:

  • 只有回答 photo1 问题,${if photo1} 才会显示该部分。
  • 只有当 integer1 问题的答案为正数时,${if integer1>0} 才会显示该部分。
  • 只有当地理点位于北半球时,${if ((geopoint1 | getValue:"y")>0)} 才会显示该部分。
  • 只有当多项选择问题已选择 A 选项时,${if multiple_choice1 | selected:"A"} 才会显示该部分。
  • 仅当 repeat1 包含三个或更多记录时, ${if (repeat1 | getValue:"count")>=3} 才显示该部分。

在以下示例中,仅在优先级单选问题中选择 high 时,第二行中的文本才会显示在报告中:

${if priority | selected:"high"}
High priority issues must be addressed within seven days.
${/}

要确定响应是否包含问题的值,只能使用 if 语句直接引用字段名称,而不使用其他运算符,例如 ${if photo1}。 这种格式将确保将空字符串、空值和未定义值都视为空值。 此格式适用于字符串、数字、日期和附件字段类型。 当此格式与重复搭配使用时,只要重复中至少有一个实例,就会显示该部分。

要将条件语句与日期和时间问题一起使用,请使用新纪元时间(自 1970 年 1 月 1 日起经过的毫秒数)执行计算。 例如,仅当日期字段中的值早于 2020 年 10 月 14 日时,${if (date1|getValue:"") < 1602735375000} 才会显示该部分。 报告语法与 XLSForm today()now() 函数不等效,因此无法针对相对于报告打印时间的时间来编写条件语句。

if 语句支持以下逻辑运算符:

运算符描述

||

如果两个语句中有一个返回 true,则返回 true

&&

如果两个给定语句均返回 true,则返回 true

!

如果语句非 true,则返回 true

==

如果两个给定值相等,则返回 true

!=

如果两个给定值不相等,则返回 true

>

评估第一个值是否大于第二个值

>=

评估第一个值是否大于或等于第二个值

<

评估第一个值是否小于第二个值

<=

评估第一个值是否小于或等于第二个值

报告中可以使用表来显示单个重复记录或记录摘要。 要使用条件语句隐藏没有值的表,必须将开始和结束占位符放在表的外部,紧挨着表的前面和后面。 要使用条件语句在表没有值时仅显示表的标题行,必须将开始占位符放置在表的第一个单元格内,并将结束占位符放置在表的最后一个单元格内。