Frage

Es gibt Hinweise auf die Antwort auf diese Frage hier und da auf dieser Seite, aber ich bin eine etwas andere Frage zu stellen.

Wo Crystal Reports Dokument, dass diese Syntax funktioniert nicht?

Trim({PatientProfile.First}) + " "
    + Trim(Iif(
        IsNull({PatientProfile.Middle}) 
        , Trim({PatientProfile.Middle}) + " "
        , " "
        )
    )  
+ Trim({PatientProfile.Last})

Ich weiß, dass die Lösung

If IsNull({PatientProfile.Middle}) Then
    Trim({PatientProfile.First})
        + " " + Trim({PatientProfile.Last})
Else
    Trim({PatientProfile.First})
       + " " + Trim({PatientProfile.Middle})
       + " " + Trim({PatientProfile.Last})

aber wie sollen wir uns nicht, um herauszufinden, die erste Version verwenden kann?

Die Dokumentation für IsNull sagt

  • Wertet das Feld im aktuellen Datensatz angegeben und gibt TRUE zurück, wenn das Feld einen Nullwert
  • enthält

und Iif gibt

  • [Returns] truePart wenn Ausdruck True and falsepart ist, wenn Ausdruck falsch ist. Der Typ des zurückgegebene Wert ist der gleiche wie der Typ von truePart und falsepart.

Ich nehme an, wenn Sie in dieser Zeile über „Typ des Rückgabewert“ starren Sie können es, aber ...

War es hilfreich?

Lösung

Ich denke, CR wertet beide IIFs wahre und falsche Teile. Weil Sie „Trim ({PatientProfile.Middle})“ Teil gibt, der aganst Nullwert bewertet werden, CR Formelauswerter scheint nicht nur.

Andere Tipps

  
    

Wo Crystal Reports Dokument, dass diese Syntax funktioniert nicht?

  

Ich bezweifle, dass es im ganzen Universum überall groß genug ist, alles zu dokumentieren, die nicht in Crystal Report funktionieren ...

Ich weiß, ich bin Jahre zu spät auf diesen einen, aber ich kam auf diese Frage bei dem Versuch, die gleiche Sache, um herauszufinden. Komischerweise konnte ich nicht einmal die Antwort in Crystal Reports-Dokumentation finden, sondern in einem Link zu IBM .

Baiscally, wenn Sie mit Crystal Reports 8.x oder 10.x, ISNULL und IIF nicht zusammenarbeiten. Von der Website:

  

Ursache

     

Es ist ein Defekt in Crystal Reports 8.x und 10.x, die von der Arbeit richtig mit der obigen Formel verhindert. Die ‚IIF‘ und ‚IsNull‘ Befehle Funktion kann nicht zusammen, und das schließt die IsNull Befehl versucht, die Verwendung von „Not“ zu verändern; zum Beispiel IIF (nicht IsNull ()).

     

Problemlösung

     

Die Abhilfe ist es, eine "If-Then-Else" Anweisung zu verwenden. Zum Beispiel:

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

Wenn Sie also CR 8.x oder 10.x verwenden (was wir sind), sind Sie kein Glück. Es macht es richtig Spaß, wenn Sie mehrere Felder zusammen verketten und einer von ihnen könnte NULL sein.

versuchen Sie dies:

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 ';
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top