Pregunta

Tengo el siguiente como valor para mi cuadro de texto en el informe SSRS:

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

Me da un " # Error " cada vez que MyDate es nula.

¿Cómo puedo solucionar esto?

ACTUALIZACIÓN:

Escribí esta función personalizada, eliminé el error, pero regresa el 31 de enero de 0001 cuando se pasa la fecha nula.

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)

¿Fue útil?

Solución

El problema, por supuesto, es que la declaración IIF de VB evalúa a ambas partes independientemente del resultado. Por lo tanto, incluso si su campo es nulo, todavía se está evaluando " Value.DateAdd " llamada.

Si recuerdo correctamente, SSRS tiene su propia " DateAdd " Función que puedes usar en su lugar. Así que puedes hacer algo como esto (verifica la documentación, porque es de memoria):

=Iif(IsNothing(Fields!MyDate.Value), "", Format(DateAdd("d", 30, Fields!MyDate.Value), "MMMM dd, yyyy"))
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top