6

.rdlc レポートの生成に問題があります。列の 1 つに次の式があります。

IIF(CInt(Fields!MyColumn.Value) = 0 or Fields!MyColumn.Value is nothing,"Unknown",Fields!MyColumn.Value)

また、そのフィールドを文字列として使用しようとしました:

=IIF(IsNothing(Fields!MyColumn.Value) or Fields!MyColumn.Value is nothing,"Unknown",Fields!MyColumn.Value.ToString())

MyColumn の値が でないNULL場合、レポートは値を正しく表示しますが、そうであるNULL(または int 型に変換された場合は 0) 場合、レポートは を返します#Error。奇妙なことに、if 関数を削除してそのフィールドの値のみを表示すると、レポートに 0 または空白が表示されます (エラーは返されません)。どうすればこれを修正できますか?

4

4 に答える 4

4

比較せずに検証を試すことができます:

=IIf(Fields!YourColumn.Value
    , Fields!YourColumn.Value
    , "Unknown")

または、チェックを逆にします(存在しないかどうかをチェックするのではなく、存在するかどうかをチェックします):

=IIf(Fields!YourColumn.Value > 0
    , Fields!YourColumn.Value
    , "Unknown")

また、よくわかりませんが、同じ列で異なる値の型を使用することに関係している可能性があります。列全体に同じ値の型を使用してみてください。たとえば、文字列のみを出力するか、int のみを出力します。

何も機能しない場合は、コード内の NULL 値を確認してから、値を 0 または -1 (またはその程度) に設定することもできます。次に、RDLC レポートでそれを確認できます。

于 2013-01-11T11:15:20.883 に答える
1

フィールドがnullかどうかを事前に確認する必要があると思います。そうしないと、比較でエラーが発生します(NULL0より大きい?->エラー!)

したがって、式は次のようになります。

=IIF(IsNothing(Fields!MyColumn.Value) or CInt(Fields!MyColumn.Value) = 0,"Unknown",Fields!MyColumn.Value)

スイッチ機能も試してみます:

=Switch(
    IsNothing(Fields!MyColumn.Value), "Unknown", 
    Fields!MyColumn.Value = 0, "Unknown", 
    Fields!MyColumn.Value > 0, Fields!MyColumn.Value, 
    )

また、フィールドがすでに数値である場合は、CInt("") を使用する必要はありません。そうでない場合、式は次のようになります。

=Switch(
    IsNothing(Fields!MyColumn.Value), "Unknown", 
    CInt(Fields!MyColumn.Value) = 0, "Unknown", 
    CInt(Fields!MyColumn.Value) > 0, Fields!MyColumn.Value, 
    )
于 2013-01-11T11:25:16.513 に答える