1

こんにちはすべて私はあなたのアドバイスが必要です、

1)毎回変化する動的な文字列があります。

たとえば、今日は文字列になり"ItemA,ItemB,ItemC"、明日はそれ"itemA,ItemB"だけになります。

2)3列のSSRSレポートがあります

3)この文字列を分割"ItemA,ItemB,ItemC"し、ssrsテーブルのこれらの3列に分割されたサブ文字列を表示したいと思います。区切り文字は","(コンマ)です

4)使用した

=Split("ItemA,ItemB,ItemC",",").GetValue(0) in the first column of the report 

=Split("ItemA,ItemB,ItemC",",").GetValue(1) in the second column of the report

=Split("ItemA,ItemB,ItemC",",").GetValue(2) in the third column of the report

5)私の文字列が"ItemA,ItemB,ItemC"、になるまで、すべてが正常に機能します

"ItemA,ItemB"しかし、私の文字列が変わる"#Error"と、3番目の列に表示されます。

私はエラーを理解しました

=Split("ItemA,ItemB,ItemC",",").GetValue(2)分割関数を適用した後、文字列には2つの値しかないため、値はありません。

#Error3番目の列で回避できる方法はありますか?

注:ssrsレポートでは3列を強制的に使用する必要があります。

3列目で使ってみ=Replace(Split("ItemA,ItemB",",").GetValue(2),"#Error","NULL") ましたが、うまくいきませんでした。

4

3 に答える 3

3

これは、IIF ステートメントを使用する際のゼロ除算の問題に似ています。問題は、IIF が式ではなく、3 つのパラメーターを持つ関数であることです。

IIF(Condition, ValueIfTrue, ValueIfFalse)

したがって、すべてのパラメーターは関数に渡される前に評価され、条件がそうでないことを意味する場合でも誤った式が評価されるため、エラーが発生します。

ゼロ除算の場合の問題を解決する通常の回避策を使用する方法がわかりません。私たちが必要としているのは、この問題のない本物の言語です。幸いなことに、これはカスタム コードの形で利用できます。

以下をせよ:

  • レポート オブジェクトがないレポート画面の領域を右クリックします。
  • レポート プロパティの選択
  • [コード] タブをクリックします。
  • 次のコードを挿入します。

    Public Function ExtractCode(Combined As String, Position As Integer) As String
        if (Split(Combined, ",").Length >= Position) Then
            Return Split(Combined, ",").GetValue(Position-1)
        Else
            Return ""
        End If
    End Function
    
  • [OK] をクリックしてレポートに戻ります

  • 式が必要なセルを右クリックし、[式] をクリックします。
  • 次の式を挿入します。

    =Code.ExtractCode(Fields!Combo.Value, 3)
    

値 3 はコンボ フィールドから抽出する「列」であるため、2 番目の「列」を取得するには 2 を使用します。その位置に列がない場合は、空の文字列が返されます。

于 2012-10-24T07:17:50.997 に答える
0

名前がエラーを返す場合は、3 列目の表示を非表示に変更できます。

于 2014-03-07T19:52:56.110 に答える