다음을 통해 공유


Null 필드 및 Null 값(Crystal 구문)

일반적으로 수식에 Null 값을 가진 필드가 있으면 수식의 평가를 즉시 중지하고 값을 생성하지 않습니다. 수식에서 Null 필드 값을 처리하려면 IsNull, PreviousIsNull 또는 NextIsNull을 처리하도록 디자인된 특수 함수 중 하나를 사용하여 명시적으로 Null 값을 처리해야 합니다.

연산자와 관련하여 조건을 평가하려면 다음 식을 사용하십시오.

IsNull({Product.Color}) Or
InStr({Product.Color}, " ") = 0

먼저 IsNull ({제품.색상})을 평가하고 이 값이 True라고 결정되면 전체 조건이 True이므로 다음을 확인할 필요가 없습니다.

InStr({Product.Color}, " ") = 0

즉, 전체 식의 결과를 추론할 수 있으면 부울 식 평가를 중지합니다. 다음 수식은 denom(분모)이 0일때 0으로 나누지 못하게 됩니다.

Local NumberVar num;
Local NumberVar denom;
...
If denom <> 0 And num / denom > 5 Then
...

{제품.색상} 필드는 "빨강" 및 "검정"과 같은 기본(basic) 색과 "스틸 새틴" 및 "주얼 그린"과 같이 두 단어로 된 고급(fancy) 색을 모두 포함합니다. 기본 색에 대해 "기본"을 쓰고 다른 색에 대해 "고급"을 써서 수식을 작성한다고 가정합니다.

If InStr({Product.Color}, " ") = 0 Then
"basic"
Else
"fancy"

InStr 함수를 호출하면 {제품.색상} 문자열에 공백이 있는지 검색합니다. 공백이 있으면 공백 위치를 반환하고 그렇지 않으면 0을 반환합니다. 기본 색은 공백 없이 한 단어로만 구성되어 있으므로 InStr 함수에서 0을 반환합니다.

Guardian Chain Lock과 같은 일부 제품의 경우 색 값은 기록되지 않으므로 {제품.색상} 필드는 데이터베이스에서 해당 레코드에 대한 Null 값을 갖습니다. 따라서 Guardian Chain Lock 레코드 옆에는 아무 단어도 인쇄되지 않습니다.

다음은 IsNull을 사용하여 위의 예를 수정하는 방법입니다.

If IsNull({Product.Color}) Or
InStr({Product.Color}, " ") = 0 Then
"basic"
Else
"fancy"

참고 항목