wake-up-neo.com

Leere oder Nullwertanzeige in SSRS-Textfeldern

Verwenden Sie SSRS (2008), um mit Nullwerten oder leeren Werten am besten umzugehen und sie durch etwas anderes zu ersetzen, das angezeigt werden soll. Die ganz offensichtliche Lösung ist

=IIF(IsNothing(Fields!MyField.Value),"NA",Fields!MyFields.Value)

Das funktioniert, obwohl es langwierig ist. Meine Hoffnung war, so etwas wie eine EmptyText-Eigenschaft im Textfeld zu finden, aber leider nichts. Irgendwelche Ideen? Soll ich ein benutzerdefiniertes Berichtselement aus der TextBox-Basis erstellen, mit dem diese Eigenschaft erstellt wird?

18
keithwarren7

Eine benutzerdefinierte Funktion aufrufen?

http://msdn.Microsoft.com/en-us/library/ms155798.aspx

Sie können jederzeit ein case stmt einfügen, um verschiedene Arten von "leeren" Daten zu verarbeiten

6
adolf garlic
=IIF(ISNOTHING(CStr(Fields!MyFields.Value)) or CStr(Fields!MyFields.Value) = "","-",CStr(Fields!MyFields.Value))

Verwenden Sie diesen Ausdruck, um die Antwort zu erhalten.

Hier ist CStr eine Standardfunktion für die Behandlung von String-Datentypen.

9
rajsekar

Ich würde nicht damit einverstanden sein, es auf der Serverseite zu konvertieren. Wenn Sie dies tun, wird es als String-Typ und nicht als Datumstyp mit allem, was dazu gehört, zurückgegeben (es wird zum Beispiel als String sortiert).

Mein Grundsatz beim Umgang mit Datumsangaben ist, sie so lange wie möglich als Datum einzugeben.

Wenn Sie einen Leistungsengpass auf dem Berichtsserver feststellen, gibt es bessere Möglichkeiten, diesen zu beheben, als Ihre Logik zu gefährden.

5
FunkyDexter

Wahrscheinlich nicht besser als Ihre Lösung, aber Sie können Ihre T-SQL mit COALESCE so anpassen, dass sie dasselbe Ergebnis liefert:

SELECT MyField = COALESCE(table.MyField, " NA")

Der Grund für den zusätzlichen Platz vor der NA besteht darin, dass beim Sortieren die NA-Ergebnisse oben platziert werden. Da Ihre Daten variieren können, ist dies möglicherweise keine gute Option.

2
Aaron D

Ich bin damit einverstanden, das Ersetzen auf der SQL-Seite durchzuführen, aber die Verwendung der ISNULL-Funktion wäre der richtige Weg.

SELECT ISNULL(table.MyField, "NA") AS MyField

Normalerweise verarbeite ich so viele Daten wie möglich auf unseren SQL-Servern und versuche, so wenig Daten wie möglich in SSRS zu manipulieren. Dies liegt hauptsächlich daran, dass mein SQL-Server erheblich leistungsfähiger ist als mein SSRS-Server.

0
Ryan

Entweder in SQL oder im Berichtscode (gemäß Funktionsvorschlag von Adolf Knoblauch)

Zu diesem Zeitpunkt würde ich es im Bericht tun. Ich habe nur sehr wenige Berichte gegen einen ausgelasteten OLTP Server und einen überlasteten Berichtsserver. Wenn ich eine andere Mischung hätte, würde ich das in SQL machen.

So oder so ist akzeptabel ...

0
gbn

Ich konnte IsNothing() nicht zum Verhalten bringen und wollte in meinem dataset keine Dummy-Zeilen erstellen (z. B. für eine bestimmte Liste von Kunden eine Dummy-Bestellung pro Monat erstellen) und wurde darauf aufmerksam Diese Nullwerte wurden als -247192 angezeigt.

Siehe, es hat funktioniert, um es zu unterdrücken (zumindest bis MSFT SSRS von 08R2 zum Besseren ändert). Verzeihen Sie mir, aber:

=iif(Fields!Sales_Diff.Value = -247192,"",Fields!Sales_Diff.Value)
0
SteveyFo

Versuche dies

=IIF(IsNothing(Fields!MyField.Value)=TRUE,"NA",Fields!MyFields.Value)
0
Akxaya