문제

이 사이트 에이 질문에 대한 답에 대한 힌트가 있지만 약간 다른 질문을하고 있습니다.

Crystal 보고서는이 구문이 작동하지 않는다는 문서는 어디에 있습니까?

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는 제공합니다

  • 반환] TruePart 표현식이 true이고 표현식이 false 인 경우 falsepart. 반환 된 값의 유형은 TruePart 및 FalsePart의 유형과 동일합니다.

"반환 가치의 유형"에 대해 그 줄을 응시하면 얻을 수 있지만 ...

도움이 되었습니까?

해결책

CR은 IIF의 True 및 False 부분을 모두 평가한다고 생각합니다. "trim ({ateriprofile.middle})이 있으므로 Aganst Null 값을 평가할 부분이 있으므로 CR 공식 평가자는 실패한 것 같습니다.

다른 팁

Crystal 보고서는이 구문이 작동하지 않는다는 문서는 어디에 있습니까?

수정 보고서에서 작동하지 않는 모든 것을 문서화 할 수있을만큼 우주 전체에 큰 곳이 있다고 의심합니다.

나는 이것에 대해 몇 년 늦었다는 것을 알고 있지만, 같은 것을 알아 내려고 노력 하면서이 질문을했다. 재미, 나는 Crystal Reports 문서에서 답을 찾을 수 없었지만 대신 IBM에 링크.

Baiscly, Crystal Reports 8.x 또는 10.x를 사용하는 경우 ISNULL 그리고 IIF 함께 일하지 마십시오. 사이트에서 :

원인

Crystal Reports 8.x 및 10.x에는 위의 공식이 올바르게 작동하는 것을 방지하는 결함이 있습니다. 'iif'및 'isnull'명령은 함께 작동 할 수 없으며, 여기에는 isnull 명령을 수정하기 위해 "Not"을 사용하려는 시도가 포함됩니다. 예를 들어, iif (isnull () 아님).

문제 해결

해결 방법은 "if-then-else"문을 사용하는 것입니다. 예를 들어,

If IsNull({~CRPT_TMP0001_ttx.install_date}) Then "TBD" Else "In Progress"

따라서 CR 8.X 또는 10.X (우리가)를 사용하고 있다면 운이 좋지 않습니다. 여러 분야를 함께 연결할 때 정말 재미있어 주며 그 중 하나는 무일하게가 될 수 있습니다.

이 시도:

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 ';
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top