レポートビルダーを使用して文字を生成しています。私がやろうとしているのは、値の列が1つあることですが、ページの最後に到達すると、新しいページを作成する代わりに、最初の列の右側にある新しい列にオーバーフローさせたいと思います。または、新しい行を作成する前に複数の列にデータを入力すると機能します。
これは可能ですか?
レポートビルダーを使用して文字を生成しています。私がやろうとしているのは、値の列が1つあることですが、ページの最後に到達すると、新しいページを作成する代わりに、最初の列の右側にある新しい列にオーバーフローさせたいと思います。または、新しい行を作成する前に複数の列にデータを入力すると機能します。
これは可能ですか?
私は回避策に行きます:基本的に解決策は、データを列に表示するクエリを定義することです(たとえば、列A - 値1〜60、列B - 値61〜120 ...)。
次に、各列を異なるデータセットとして定義できます。
SSRS では、テーブルの数を定義し (各テーブルには 1 つの列のみが含まれます)、それらを隣り合わせに配置できます。(テーブルの可視性を使用してテーブルを非表示にしますnull
)
始めましょう:
最初に、1 ページに収まる行数を知る必要があります (この例では 60 とします)。
次に、設定できる最大値を知る必要があります (この例では 180 とします)。
次のようにクエリを定義します。
WITH NumberedMyTable AS
(
SELECT
Id,
Value,
ROW_NUMBER() OVER (ORDER BY Id) AS RowNumber
FROM
MyTable
)
SELECT
Id,
Value
FROM
NumberedMyTable
WHERE
RowNumber BETWEEN @From AND @To
すべての列に対してこのクエリを繰り返します (この例では、このクエリを 3 回定義する必要があります)。
次に、3 つのテーブル (それぞれ 1 列) を定義し、それに応じて各データセットを値として定義します。
Tablix 可視性式を次のように定義します。
=IIf(CountRows("MyDataset") = 0,false,true)
そのこと!
SSRS の Tablix は取得したデータセットに基づいており、これはレポート ビルダーの機能または回避策ではないため、SQL ストアド プロシージャ領域から回避策を見つける必要があります。
セット数または列に対してこの操作を行うストアド プロシージャを作成し、セット数の行に対してこれをテストすることをお勧めします。これは、SQL プラットフォームに合わせて調整する必要があります。
頑張ってくださいあなたの要件と質問が大好きです!