Question

La valeur suivante de ma zone de texte dans le rapport SSRS est la suivante:

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

Cela me donne une " # erreur " chaque fois que MyDate est null.

Comment puis-je contourner ce problème?

MISE À JOUR:

J’ai écrit cette fonction personnalisée, elle s’est débarrassée de l’erreur, mais renvoie le 31 janvier 0001 lorsque la date nulle est passée.

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)

Était-ce utile?

La solution

Le problème, bien sûr, est que la déclaration de VB IIF évalue les deux côtés, quel que soit le résultat. Ainsi, même si votre champ est null, il évalue toujours le " Value.DateAdd " appeler.

Si je me souviens bien, SSRS a son propre " DateAdd " fonction que vous pouvez utiliser à la place. Donc, vous pouvez faire quelque chose comme ça (consultez la documentation car cela vient de la mémoire):

=Iif(IsNothing(Fields!MyDate.Value), "", Format(DateAdd("d", 30, Fields!MyDate.Value), "MMMM dd, yyyy"))
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top