Wie für NULL-Werte zu überprüfen, bevor Sie .AddDays () in SSRS?
-
02-07-2019 - |
Frage
Ich habe folgend als Wert für meine Textbox in SSRS-Bericht:
=iif(IsNothing(Fields!MyDate.Value), "", Format(Fields!MyDate.Value.AddDays(30), "MMMM dd, yyyy"))
Es gibt mir einen "# Fehler" jedes Mal MyDate null ist.
Wie kann ich dieses Problem umgehen?
UPDATE:
ich diese benutzerdefinierte Funktion geschrieben, wurde es von den Fehlern beseitigen, sondern kehrt zum 31. Januar 0001, wenn null Datum überschritten ist.
Public Shared Function NewDate(myDate as DateTime, days as integer) AS string
IF ISNOTHING(myDate) OR ISDBNULL(myDate) Then
NewDate = " "
ELSE
NewDate = Format(myDate.AddDays(days), "MMMM dd, yyyy")
END IF
End Function
@ Matt Hamilton: DateAdd ( "d", 30, Felder MyDate.Value!)
Lösung
Das Problem ist natürlich, dass VB IIF-Anweisung beide Seiten wertet unabhängig vom Ergebnis. Also selbst wenn Ihr Feld null ist es immer noch etwas „Value.DateAdd“ Aufruf zu bewerten.
Wenn ich mich richtig erinnere, hat SSRS seine eigene „DateAdd“ -Funktion, die Sie stattdessen verwenden können. So können Sie so etwas wie dieses (in der Dokumentation ‚Coz diese aus dem Speicher ist) tun können:
=Iif(IsNothing(Fields!MyDate.Value), "", Format(DateAdd("d", 30, Fields!MyDate.Value), "MMMM dd, yyyy"))