SQLレポートにマトリックスがあり、A4ページに印刷したいと思います。マトリックスの列数が4未満の場合は適合しますが、4列を超える場合は、マトリックスを折り返し、ページごとに4列のみを表示します。これは可能ですか?ローカルモードでSQLReporting2005を使用しています。
5 に答える
私は回避策を見つけました:
- 最初に、列カウントというフィールドをデータソースに追加しました。データソースはビジネス オブジェクトに組み込まれているため、データの列数を簡単に知ることができました。
- 次に、レポートにリストを作成し、マトリックスをリストに移動しました。
- リストのグループ式 =Ceiling(Fields!ColumnCount.Value/4) を作成しました。
要するに、4 列ごとに分割するようにリストに指示しています。これにより、行列が 4 列後に分割されます。
これはすべてのシナリオで機能するわけではなく、おそらく小計を台無しにしますが、私のアプリケーションでは機能しました。
免責事項: これは私の考えではありません... Chris Hays の Sleezy Hacksから適応させました。
本質的に列を折り返す方法はありません。上記のMboyのソリューションは、過去に行ったソリューションと非常に似ているため、ここでは彼の手順を繰り返しませんが、警告します。列数が多いマトリックスの場合、レポートのページ数が指数関数的に増加します。あなたの場合、これは問題ではないかもしれません。しかし、ほとんどの場合、列を折り返さない方が(ページ出力の観点から)安価であることがわかりました。
MBoy の回答に加えて、1 ページに複数のグラフを表示したかったのですが、グラフの数はデータによって異なります。私が望んでいたのは、必要な数の行で 2 つのグラフを 1 行に表示することでした。私は次のようにしました:
MBoy が提案したように、データに [ChartNumber] という名前の「Count」フィールドを作成しました。このフィールドは、グラフごとに 1 ずつ増加します (したがって、7 つのグラフがある場合、行には 1 ~ 7 の番号が付けられます)。
これを実現するために、DENSE_RANK() SQL 関数を使用して、クエリに DENSE_RANK() OVER (ORDER BY [Data].[ItemtoCount]) AS [ChartNumber] などのフィールドを作成しました。
したがって、部門ごとに異なるグラフが必要な場合は、DENSE_RANK() OVER (ORDER BY [Data].[Department]) AS [ChartNumber] を使用します。フォームにリストを追加し、データセットにバインドしました
次に、行グループを =Ceiling(Fields!ChartNumber.Value/2) でグループ化するように設定します
次に、 =Ceiling(Fields!ChartNumber.Value Mod 2) に列グループを追加しました
リスト内にグラフを作成してプレビューすると、各行に 2 つのグラフが並んで表示されます。
グラフを使用しましたが、マトリックスやその他の項目をリスト内に簡単に配置できます。
編集: n 列のより一般的な解決策は、 =Ceiling(Fields!ChartNumber.Value / n) および =Ceiling(n * Fields!ChartNumber.Value Mod n) です。
私はそうは思わない。Excelにエクスポートしてから印刷することが、私が見つけたSSRSマトリックスレポートを印刷する最も柔軟な方法であることがわかりました。私のユーザーのほとんどはよく知っているので。
MSDNによると、Tablix データ領域は、テーブルが垂直方向に行うのとほぼ同じ方法で水平方向に改ページを行います。つまり、グループの変更時に改ページを指定できます。ページネーション式の使用を提案する別の MSDN 記事がありますが、この手法は MBoy によって既に説明されているため、推奨されている手法であることを除いて繰り返しません。