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)

È stato utile?

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"))
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top