Come controllare i valori null prima di eseguire .AddDays () in SSRS?
-
02-07-2019 - |
Domanda
Ho il seguente valore come valore per la mia casella di testo nel rapporto SSRS:
=iif(IsNothing(Fields!MyDate.Value), "", Format(Fields!MyDate.Value.AddDays(30), "MMMM dd, yyyy"))
Mi dà un errore " # " ogni volta che MyDate è null.
Come posso aggirare questo?
UPDATE:
Ho scritto questa funzione personalizzata, mi sono sbarazzato dell'errore, ma restituisce il 31 gennaio 0001 quando viene superata la data nulla.
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, Fields! MyDate.Value)
Soluzione
Il problema, ovviamente, è che la dichiarazione IIF di VB valuta entrambe le parti indipendentemente dal risultato. Quindi, anche se il tuo campo è nullo, sta ancora valutando " Value.DateAdd " chiamare.
Se ricordo bene, SSRS ha il suo " DateAdd " funzione che è possibile utilizzare invece. Quindi puoi fare qualcosa del genere (controlla la documentazione 'perché questo è dalla memoria):
=Iif(IsNothing(Fields!MyDate.Value), "", Format(DateAdd("d", 30, Fields!MyDate.Value), "MMMM dd, yyyy"))