조건부 보고서 요소

보고서의 요소는 if 문을 사용하여 조건부로 표시하거나 숨길 수 있습니다. if 문은 조건부 세그먼트의 끝을 나타내는 ${/}(으)로 시작 ${if expression} 플레이스 홀더에 식을 입력하여 사용할 수 있습니다. 보고서의 일부를 표시하거나 숨기는 데 사용할 수 있는 if 문의 몇 가지 예시는 다음과 같습니다.

  • ${if photo1}는 photo1 질문에 답변한 경우에만 섹션을 표시합니다.
  • ${if integer1>0}는 integer1 질문에 대한 답변이 양수인 경우에만 섹션을 표시합니다.
  • ${if ((geopoint1 | getValue:"y")>0)}는 지오포인트가 북반구에 있는 경우에만 섹션을 표시합니다.
  • ${if multiple_choice1 | selected:"A"}는 선다형 질문에서 선택지 A를 선택한 경우에만 섹션을 표시합니다.
  • ${if (repeat1 | getValue:"count")>=3}는 repeat1에 레코드가 세 개 이상 포함되어 있는 경우에만 섹션을 표시합니다.

다음 예시에서 두 번째 줄의 텍스트는 우선순위 단답형 질문에 high가 선택된 경우에만 보고서에 나타납니다.

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

응답에 질문의 값이 포함되어 있는지 판단하려면 ${if photo1} 등의 다른 연산자 없이 필드 이름을 직접적으로 나타내는 if 문만 사용합니다. 이 형식을 사용하면 빈 문자열, null 값, 정의되지 않은 값은 모두 빈 값으로 간주됩니다. 이 형식은 문자열, 숫자, 날짜 및 첨부 파일 필드 유형에 적용됩니다. 이 형식을 반복과 함께 사용하면, 반복에 1개 이상의 인스턴스가 있으면 해당 섹션은 나타납니다.

날짜와 시간 질문에 조건문을 사용하려면 에포크 시간(1970년 1월 1일 이후 경과된 밀리초)을 사용하여 계산을 수행합니다. 예를 들어 날짜 필드의 값이 2020년 10월 14일 이전인 경우에만 ${if (date1|getValue:"") < 1602735375000}에 섹션이 표시됩니다. 보고서 구문에는 XLSForm today() 또는 now() 함수와 동일한 기능이 없으므로 보고서가 인쇄된 때와 관련된 시간에 대한 조건문을 작성하는 것은 불가능합니다.

if 문에는 다음 논리 연산자가 지원됩니다.

연산자설명

||

2개의 문 중 하나가 true를 반환하면 true입니다.

&&

주어진 2개의 문이 true를 반환하면 true입니다.

!

문이 true가 아니면 true입니다.

==

주어진 2개의 값이 서로 같으면 true입니다.

!=

주어진 2개의 값이 서로 같지 않으면 true입니다.

>

첫 번째 값이 두 번째 값보다 큰지를 평가합니다.

>=

첫 번째 값이 두 번째 값보다 크거나 동일한지를 평가합니다.

<

첫 번째 값이 두 번째 값보다 작은지를 평가합니다.

<=

첫 번째 값이 두 번째 값보다 작거나 동일한지를 평가합니다.

보고서에서 테이블을 사용하여 개별 반복 레코드 또는 레코드 요약을 제시할 수 있습니다. 조건문을 사용하여 값이 없는 테이블을 숨기려면 시작 및 종료 플레이스 홀더를 테이블 밖에(테이블 바로 앞뒤에) 배치해야 합니다. 테이블에 값이 없을 때 조건문을 사용하여 테이블의 헤더 행만 표시하려면 시작 플레이스 홀더를 테이블의 첫 번째 셀 내에 배치하고 종료 플레이스 홀더를 테이블의 마지막 셀 내에 배치해야 합니다.