5

SSRSレポートのテキストボックスの値として次のものがあります。

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

MyDateがnullになるたびに「#Error」が表示されます。

これを回避するにはどうすればよいですか?

アップデート:

このカスタム関数を作成しました。エラーは削除されましたが、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 

@マットハミルトン:DateAdd( "d"、30、Fields!MyDate.Value)

4

1 に答える 1

6

もちろん、問題は、VB の IIF ステートメントが結果に関係なく両側を評価することです。したがって、フィールドが null の場合でも、「Value.DateAdd」呼び出しを評価しています。

私の記憶が正しければ、SSRS には独自の "DateAdd" 関数があり、代わりに使用できます。したがって、次のようなことができます(これはメモリからのものなので、ドキュメントを確認してください):

=Iif(IsNothing(Fields!MyDate.Value), "", Format(DateAdd("d", 30, Fields!MyDate.Value), "MMMM dd, yyyy"))
于 2008-09-25T23:25:42.630 に答える