SSRSレポートに、テーブルの詳細ではなくグループのみを表示するテーブルがあります。カラーバンディングを使用できるように、表示されているアイテムの行番号を確認したい。 「Rowcount(Nothing)」を使用してみましたが、代わりに詳細テーブルの行番号を取得しました。
私の基礎となるデータは次のようなものです
ROwId Team Fan
1 Yankees John
2 Yankees Russ
3 Red Socks Mark
4 Red Socks Mary
...
8 Orioles Elliot
...
29 Dodgers Jim
...
43 Giants Harry
グループのみを表示する私のテーブルは次のようになります。
ROwId Team
2 Yankees
3 Red Socks
8 Orioles
29 Dodgers
43 Giants
見た目が欲しい
ROwId Team
1 Yankees
2 Red Socks
3 Orioles
4 Dodgers
5 Giants
RunningValue 式を使用してこれを行うことができます。
=RunningValue(Fields!Team.Value, CountDistinct, "DataSet1")
DataSet1
は、基礎となるデータセットの名前です。
データを検討してください:
簡単なレポートを作成し、RowNumber
とRunningValue
のアプローチを比較すると、RunningValue
が必要な結果をもたらすことがわかります。
これは少しのvbcodeで簡単に実現できます。 [レポート]-[プロパティ]-コードに移動し、次のように入力します。
_Dim rownumber = 0
Function writeRow()
rownumber = rownumber + 1
return rownumber
End Function
_
次に、セルで=Code.writeRow()
を使用してこの関数を呼び出します
テーブル内でグループの使用を開始するとすぐに、RowNumber関数とRunningGroup関数が奇妙な動作を開始するため、必要なことを実行するためのコードを記述するだけの方が簡単です。
上記の提案がすべての解決策の1つであるとは確信していません。私のシナリオは、複数の列を持つグループ化があることです。関数で使用する単一の列がないため、合意されたソリューションRunningValueを使用できませんでした。
同じ理由でVBAコード関数をそのまま使用することはできませんでした。そのため、複数の列と複数のプロパティで同じ値を使用する必要がありました。列* Mプロパティ)その後、NxM呼び出しごとにRowNumberを更新することしかできませんでしたが、列カウント関数を確認できなかったため、列を追加した場合は、N定数も増やす必要があります。また、新しい列を追加したくありませんでした。グループ化にも推奨されているため、非表示にする方法がわからず、値を更新するだけで何も返さない関数Aを呼び出すことができるvbaシステムを作成できませんでした(つまり、グループ行ごとに1回だけ)その後、行番号変数を返す別の関数GetRowNumberを呼び出します。これは、呼び出しの前に色付けが行われたため、常に1つの列が残りの列と同期していないためです。
私が考えることができる他の2つのソリューションは、クエリ自体に前述の結合された列を配置するか、DENSE_RANKを使用してすべてのグループ列でソートすることです。
DENSE_RANK() OVER (ORDER BY GroupCol1, GroupCol2, ...) AS RowNumber