2008-09-25 12 views
5

Mam następujący jako wartość dla mojego pola tekstowego w SSRS zgłosić:Jak sprawdzić wartości zerowe przed wykonaniem .AddDays() w SSRS?

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

To daje mi „#Error” Za każdym razem MyDate jest zerowa.

Jak to obejść?

UPDATE:

napisałem tę funkcję niestandardową, to pozbył się błędów, ale wraca 31 stycznia 0001, kiedy zerowa data podjęcia.

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, Pola MyDate.Value)

+0

Dlaczego to musi być wbudowane? –

+0

Cuz do 10 minut temu nie wiedziałem o "kodzie niestandardowym" w SSRS :) –

Odpowiedz

6

Problem, oczywiście, jest to, że oświadczenie IIF VB ocenia obie strony niezależnie od wyniku. Więc nawet jeśli twoje pole ma wartość zerową, wciąż ocenia połączenie "Value.DateAdd".

Jeśli dobrze pamiętam, usługa SSRS ma własną funkcję "DateAdd", której można użyć zamiast niej. Możesz więc zrobić coś takiego (sprawdź dokumentację "coz jest z pamięci):

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

przełączam parametry w funkcji, 30 powinno być # 2 thanx –

+0

Zrobione! Dzięki, Roman. –

Powiązane problemy