|
||||||
HowTo: Crystal Reports - Trotz Parameter in Datensatzauswahl NULL Werte in Bericht anzeigenVielleicht nicht gleich zu Anfang, aber irgendwann kommt der Moment der Erkenntnis für jeden Entwickler, der Crystal Reports von Business Objects als Report Designer verwendet. Möglicherweise hat man zwei Parameterfelder “Name1″ und “Name2″ im Feld-Explorer angelegt.
(
({Produkt.Proben_Name} LIKE {?Name1}) OR ({Produkt.Proben_Name} LIKE {?Name2}) ) in einem Bericht nur Datensätze anzuzeigen, die entweder bei der Planung des Berichtes den Eingaben bei Parameter “Name1” oder aber bei “Name2” entsprechen. Soweit …. so gut …. Mögicherweise wollen wir aber alle Datensätze, die der Eingabe bei Name1 oder Name2 entsprechen, sowie alle Datensätze, die in der Tabelle Produkte in der Spalte Proben_Name NULL Werte enthalten.
(
({Produkt.Proben_Name} LIKE {?Name1}) OR ({Produkt.Proben_Name} LIKE {?Name2}) OR (not IsNull({Produkt.Proben_Name})) ) Erstaunt wird der Entwickler feststellen, dass Datensätze die NULL im Feld “Proben_Name” enthalten, trotz der scheinbar richtigen Abfrage, nicht dargestellt werden. Das Problem ist hier die Reihenfolge der Abfrage der Parameter. ({Produkte.Proben_Name} LIKE {?Name1})
verhindert, dass die NULL Werte überhaupt von Crystal Reports verarbeitet werden. Um trotzdem zu dem gewünschten Ergebnis zu kommen, also alle Datensätze die entweder der Eingabe bei Parameter Name1 oder Name2 entsprechen oder die in der entsprechenden Spalte einen NULL Wert enthalten, anzuzeigen, muss die Datensatzauswahl wie folgt abgewandelt werden:
(
( (not IsNull({Produkt.Proben_Name}) AND ({Produkt.Proben_Name} LIKE {?Name1})) OR ( (not IsNull({Produkt.Proben_Name}) AND ({Produkt.Proben_Name} LIKE {?Name2})) OR (not IsNull({Produkt.Proben_Name})) ) Noch einfacher ist, die not IsNULL() Abfrage zuerst zu machen. Crystal Reports geht hier nämlich wirklich streng nach Reihenfolge vor:
(
(not IsNull({Produkt.Proben_Name})) OR ({Produkt.Proben_Name} LIKE {?Name1}) OR ({Produkt.Proben_Name} LIKE {?Name2}) )
2 comments to HowTo: Crystal Reports - Trotz Parameter in Datensatzauswahl NULL Werte in Bericht anzeigen |
||||||
|
Copyright © 2010 Joachim Uhls Blog - All Rights Reserved
|
||||||
Muss es anstelle von
“not IsNull({Produkt.Proben_Name})”
nicht
“IsNull({Produkt.Proben_Name})” lauten??
Schliesslich sollen in deiner Beschreibung ja NULL Werte explizit angezeigt werden, was mit deinem Beispiel aber nicht funktioniert. Ändert man das “not isnull” in “isnull” werden auch die NULL Werte korrekt angezeigt. Dieser Fehler ist in allen Beispielen vorhanden die du oben beschrieben hast.
Gruss aus der Schweiz
Tom
Korrekt! Ist korrigiert ….. danke Dir!