SSRSで.AddDays()を実行する前にnull値をチェックする方法は?
-
02-07-2019 - |
質問
SSRSレポートのテキストボックスの値として次のものがあります:
=iif(IsNothing(Fields!MyDate.Value), "", Format(Fields!MyDate.Value.AddDays(30), "MMMM dd, yyyy"))
"#Error"が表示されます。 MyDateがnullであるたび。
これを回避するにはどうすればよいですか
更新:
iはこのカスタム関数を作成し、エラーを取り除きましたが、null日付が渡されると0001年1月31日を返します。
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&quot ;, 30、Fields!MyDate.Value)
解決
もちろん、問題は、VBのIIFステートメントが結果に関係なく両側を評価することです。そのため、フィールドがnullであっても、" Value.DateAdd"を評価しています。呼び出します。
正しく思い出せば、SSRSには独自の「DateAdd」があります。代わりに使用できる関数。したがって、次のようなことを行うことができます(ドキュメント「これはメモリからです」を確認してください):
=Iif(IsNothing(Fields!MyDate.Value), "", Format(DateAdd("d", 30, Fields!MyDate.Value), "MMMM dd, yyyy"))
所属していません StackOverflow