2008-09-25 11 views
5

Tengo el siguiente como el valor de mi cuadro de texto en SSRS Informe:¿Cómo verificar los valores nulos antes de hacer .AddDays() en SSRS?

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

Me da un "Error" cada vez que se MiFecha nula.

¿Cómo puedo solucionar esto?

ACTUALIZACIÓN:

he escrito esta función personalizada, que se deshizo del error, sino que vuelve 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, Campos MyDate.Value)

+0

¿Por qué tiene que estar en línea? –

+0

Cuz hasta hace 10 minutos no sabía acerca de "Código personalizado" en SSRS :) –

Respuesta

6

El problema, por supuesto, es que la declaración de IIF VB evalúa ambos lados sin importar el resultado. Entonces, incluso si su campo es nulo, todavía está evaluando la llamada "Value.DateAdd".

Si recuerdo correctamente, SSRS tiene su propia función "DateAdd" que puede usar en su lugar. Entonces puede hacer algo como esto (consulte la documentación 'porque esto es de memoria):

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

cambiar los parámetros en la función, 30 debe ser # 2 thanx –

+0

¡Hecho! Gracias romano –

Cuestiones relacionadas