Como verificar se há valores nulos antes de fazer .AddDays () no SSRS?
-
02-07-2019 - |
Pergunta
Eu tenho o seguinte como o valor para minha caixa de texto no relatório SSRS:
=iif(IsNothing(Fields!MyDate.Value), "", Format(Fields!MyDate.Value.AddDays(30), "MMMM dd, yyyy"))
Isso me dá uma "# erro" cada vez MyDate é nulo.
Como faço para contornar isso?
UPDATE:
Eu escrevi essa função personalizada, que se livrou do erro, mas retorna 31 de janeiro de 0001 quando a data nulo é passado.
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, Campos MyDate.Value)
Solução
O problema, claro, é que a declaração IIF do VB avalia ambos os lados, independentemente do resultado. Assim, mesmo se o campo é nulo ainda está avaliando a chamada "Value.DateAdd".
Se bem me lembro, SSRS tem sua própria função "SomData" que você pode usar em seu lugar. Assim, você pode fazer algo como isto (verifique a documentação 'coz este é a partir da memória):
=Iif(IsNothing(Fields!MyDate.Value), "", Format(DateAdd("d", 30, Fields!MyDate.Value), "MMMM dd, yyyy"))