5

2 つの Tablix (テーブル) と 1 つのデータセットがあります。それらはこのデータセットと境界を接しています

   Serial No.  |      Name    
 ______________|________________
    SN0003     |      Beckham
    SN0005     |      Henry
    SN0012     |      Rooney
    SN0119     |      Ji Sung
    SN0200     |      Gerrard

私のレポートでは、2 つの Tablix を分割する必要があります。以下のように表示されます...

(「下まで」の前は「左から右」です)

   Serial No.  |      Name        ||    Serial No.  |    Name
 ______________|________________  || _______________|______________
    SN0003     |      Beckham     ||     SN0005     |    Henry        
    SN0012     |      Rooney      ||     SN0119     |    Ji Sung
    SN0200     |      Gerrard     ||                |

左の表は Tablix1 で、右の表は Tablix2 です

TablixごとにこのFilterExpressionを使用すると思います。

      = RowNumber(Nothing) mod 2 = 0 

for Tablix1(左表)

      = RowNumber(Nothing) mod 2 = 1

for Tablix2(右表)

しかし、このメッセージはエラーです...

     "A FilterExpression for tablix ‘Tablix1’ uses the RowNumber function.
      RowNumber cannot be used in filters."

Filter で Rownumber を使用することはできません。私は何をすべきか?データセットを編集しなければ可能ですか?

4

2 に答える 2

6

そもそも受信しているデータセットを編集することは可能ですか? ROW_NUMBERを使用して、これにフィールドを追加できます

SELECT
  ...,
  ROW_NUMBER() OVER(ORDER BY SerialNo ASC) AS RowNum,
  ...

次に、返されたデータセットは次のようになります

   Serial No.  |      Name      |  RowNum
 ______________|________________|__________
    SN0003     |      Beckham   |   1
    SN0005     |      Henry     |   2
    SN0012     |      Rooney    |   3
    SN0119     |      Ji Sung   |   4
    SN0200     |      Gerrard   |   5

そして、あなたはあなたのフィルターを行うことができますRowNum mod 2 = 0

編集

または、基になるデータセットを変更できない場合は、RunningValue と CountDistinct を使用して賢くすることができます。

CountDistinct行ごとに、データセットで一致する行の数が得られます(したがって、シリアル番号が一意であると仮定すると、通常は1つです)

RunningValueテーブルの各行の値の合計が増加します...これにより、これらすべての「CountDistincts」を合計できます。

テーブルの行の可視性を次のように設定します

Tablix1 の場合

=(RunningValue(CountDistinct(Fields!SerialNo.Value), Sum, "DataSetName") mod 2) = 0

Tablix2 の場合

=(RunningValue(CountDistinct(Fields!SerialNo.Value), Sum, "DataSetName") mod 2) = 1
于 2015-09-03T08:01:53.990 に答える
0

[解決済み] ありがとう、ジョナス

これは私のデータテーブルです。store seq_no の新しい列を作成しました。右クリック>列を追加し、名前を「SEQ_NO」に変更します ここに画像の説明を入力

次のステップでは、vb でコーディングして SEQ_NO 列に値を設定します。

                Dim dt As dsProductionControl.TL_PRODUCTION_SCHEDULE_DETAILSDataTable = DsProductionControl.TL_PRODUCTION_SCHEDULE_DETAILS

                For i As Integer = 1 To dt.Rows.Count
                    dt.Rows(i).Item("SEQ_NO") = i
                Next i

レポートのTablixでFilterをSEQ_NOで設定

        =Fields!SEQ_NO.Value Mod 2 = 0

ありがとう、ジョナス。

于 2015-09-03T10:04:04.277 に答える