既定の SSRS レポートでは、ページ ヘッダーにデータを公開することはできません。このデータを表示する方法はありますか?
7 に答える
レポートに必要なことの 1 つは、レポートに適切なヘッダーを付けることです。レポートで明確にする必要があるビジネス ニーズに関する詳細情報を提供するために、ロゴとユーザーのレポート パラメーターを他のデータと共に表示するのが好きです。Microsoft SQL Server 2005 Reporting Services がネイティブに実行できないことの 1 つは、データセットのデータをヘッダーに表示することです。この投稿では、これを回避する方法と、それがいかに簡単かを説明します。
[ビジネス インテリジェンス プロジェクト] セクションでレポート サーバー プロジェクトを作成し、AdventureWorksLTReports という名前を付けます。CodePlex の AdventureWorksLT サンプル データベースを使用します。
代替テキスト http://www.cloudsocket.com/images/image-thumb.png
次に、デザイナーでレポート領域を右クリックして、ページ ヘッダーを表示します。
代替テキスト http://www.cloudsocket.com/images/image-thumb1.png
ページヘッダーが表示されます。ページ フッターを表示したい場合は、ページ ヘッダーと同じメニューからアクセスできます。
代替テキスト http://www.cloudsocket.com/images/image-thumb2.png
ページ ヘッダーに表示される販売注文のデータを返すストアド プロシージャを作成しました。ページ ヘッダーには、販売注文に関する次の情報が表示されます。
- 注文日
- 受注番号
- 会社
- 営業担当者
- 総支払額
ページ ヘッダーのデータ フィールドごとに TextBox を作成し、対応するラベルの TextBox を作成します。Sales Order データが必要な TextBoxes の Expression を変更しないでください。
代替テキスト http://www.cloudsocket.com/images/image-thumb3.png
レポート本文に、ページ ヘッダーに必要な各データ フィールドの TextBox を配置します。各 TextBox の Visibility で、Hidden に True を選択します。これは、ページ ヘッダーで必要なデータのプレースホルダーになります。
代替テキスト http://www.cloudsocket.com/images/image-thumb4.png
レポートは、以下に示すスクリーンショットのようになります。
代替テキスト http://www.cloudsocket.com/images/image-thumb5.png
最後のステップで最も重要なのは、ページ ヘッダーにある TextBoxes 内の Hidden TextBox を参照することです。次の Expression を使用して、必要な TextBox を参照します。
=ReportItems!.Value
レポートは次のようになります。
代替テキスト http://www.cloudsocket.com/images/image-thumb6.png
レポート プレビューでは、レポート ヘッダーに販売注文ヘッダー データが含まれているはずです。
パラメータを介してそれを行う必要があります。表示するデータごとにパラメーターを追加し、そのパラメーターを非表示に設定します。次に、デフォルト値を「クエリから」に設定し、データセットと値フィールドを適切な値に設定します。
最良のオプションは、表示するデータセットのフィールドをデフォルト値にして、内部パラメーターを作成することだと思います。
返されたすべての行に共通のフィールドをヘッダーに表示したかったので、このシナリオでは、リンクテーブルソリューションを使用しました(本文にフィールドを含むテーブルを配置し、ヘッダーのテキストボックスをこのテーブルにリンクします)。
これを行ったのは、パラメータソリューションを使用していて、問題のフィールドにデータが返されない場合、空白のテーブルではなく、「パラメータに値がありません」というテキストが表示されるためです。このテキストはユーザーを混乱させると思いました(パラメーターが表示されないため)。
オリオン・エイドリアンと一緒です。レポート パラメーターが最適です。
レポートが複数のページにまたがる場合、この手法は機能しません。代わりにクエリ パラメータを使用し、この記事に従ってテキスト ボックスの値を =Parameters!Name.Value に設定します。
考えられる回避策は次の 2 つです。
レポートの本文内にデータバインドされたフィールドを非表示のテキスト ボックスとして配置し、ヘッダーに別のテキスト ボックスを配置して、その値が本文内の非表示のテキスト ボックスを指すようにすることができます。
レポート パラメーターを使用してデータを保存し、それらのパラメーターを使用してヘッダー内のデータにアクセスしてみてください。