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)

Foi útil?

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"))
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top