2008-09-25 6 views
5

Ich habe berichten die folgenden als Wert für meine Textbox in SSRS:Wie überprüft man vor dem Ausführen von .AddDays() in SSRS nach Nullwerten?

=iif(IsNothing(Fields!MyDate.Value), "", Format(Fields!MyDate.Value.AddDays(30), "MMMM dd, yyyy")) 

Es gibt mir eine „# Fehler“ jedes Mal MyDate null ist.

Wie kann ich das 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)

+0

Warum muss es inline sein? –

+0

Cuz bis vor 10 Minuten wusste ich nicht über "Custom Code" in SSRS :) –

Antwort

6

Das Problem ist natürlich, dass VB IIF-Anweisung beide Seiten wertet unabhängig vom Ergebnis. Selbst wenn Ihr Feld null ist, wird immer noch der Aufruf "Value.DateAdd" ausgewertet.

Wenn ich mich richtig erinnere, hat SSRS seine eigene "DateAdd" -Funktion, die Sie stattdessen verwenden können. So können Sie so etwas tun (überprüfen Sie die Dokumentation 'coz das ist aus dem Speicher):

=Iif(IsNothing(Fields!MyDate.Value), "", Format(DateAdd("d", 30, Fields!MyDate.Value), "MMMM dd, yyyy")) 
+0

schalten Sie die Parameter in der Funktion, 30 sollte # 2 sein thanx –

+0

Erledigt! Danke Roman. –

Verwandte Themen