トップ回答者
Microsoftレポートにおける各ページ毎のフィルタの設定について

質問
-
seika240640と申します。
いつもお世話になっております。
自身で調べて解決出来ず、度々問い合わせさせていただく形となってしまい非常に申し訳ないのですが、もし宜しければご教授いただければと思います。
visualstudio2010Proに搭載されているMicrosoftレポート(asp.net c#で作成)を使い、上記のようなデザインの成績表を作成したいと考えております。また、2ページ目に遷移した時にはBさんとBさんの項目に対する各ランクが表示され、3ページ目にはCさんが・・・という風にしたいと思っております。
しかしここで止まってしまいました。
テーブルやテキストボックスに設定するフィルターではフィルターにはじかれたデーターは2ページ目以降にも表示されなくなってしまいます。また、各レポートアイテムの長さを調整してもレイアウトが崩れてしまい使えませんでした。1ページ目にはAさんのデーター、2ページ目にはBさんのデーターのみを表示させる方法がありましたら教えていただけますようお願いいたします。なお、ページ毎にフィルターを掛けることが出来れば実現出来るかなと考えましたが、お心当たりがあればどのような方法でも構いません。
なお、データーはSQLDBから取ってきており、以下の左側の“ビュー”をデータセットにしていますが、右側の“テーブル”もデーターセットとして取得して使用しても問題ありません。
皆様側にはお手数をお掛けいたしますが、何卒アドバイスの程よろしくお願いいたします。
回答
-
氏名を、項目とランクと同じtablix入れるレイアウトにできるなら、グルーピングするだけでOKです。
それが無理なら、私ならMicrosoftレポートを使うことをあきらめます;b- 回答としてマーク moon__moon 2012年8月13日 4:08
-
方法1 レポート1枚
メインレポートを作ります
データセットはサーバーから引っ張ってきたビューにしておきます。
レポートにテーブルを貼り付けます。
テーブルのプロパティで、データセットをビューに設定します。
行を選択してグループの追加->親グループの追加を選択します。
グループ化でnameフィールドを選択、グループヘッダーの追加もします。
詳細行に"項目"と"ランク"列を作ります。
グループヘッダーの適当な位置にプレースホルダでnameフィールドを設定しておきます。
グループのプロパティで改ページを"グループの各インスタンスの間"にチェックをします。あとは実行すると勝手にグループ化してくれます。
方法2 メイン+サブレポート
1枚に表示させたい内容のレポートをサブレポートで作ります。
データセットはサーバーから引っ張ってきたビューにしておきます。
サブレポートのパラメーターにname(テキスト)を追加します。
テーブルのプロパティで、データセットをビューに設定します。
テーブルに"項目"と"ランク"列を作ります。
テーブルのプロパティでフィルター式で
式 : name
演算子 : =
値 : 式=Parameters!name.Value
にします。
ついでに氏名の欄の式 : =Parameters!name.Value
メインレポートを作ります
データセットはサーバーから引っ張ってきたビューにしておきます。
レポートに一覧を貼り付けます。
一覧のプロパティで、データセットをビューに設定します。
一覧詳細行を選択してメニューで、行グループ->グループプロパティを開いて、グループ式の「グループ化の条件」をnameフィールドにします。ついでに改ページで改ページオプションで"グループの各インスタンスの間"にチェックします。
一覧内側のセル部分にサブレポートを貼り付けます。 <-ここがポイント
サブレポートのプロパティで、パラメーターに
名前 : name
値 : nameフィールド
を追加します。あとは実行すると、
メインレポートではname列をグループ化した一覧が作られます。
一覧の各行ごとにサブレポートが作られます。
サブレポートにも忘れずにデータセットを渡しておきましょう。
グループ化されたnameがサブレポートのnameパラメータに渡されます。
サブレポートではnameパラメーターでフィルタされたビューが表示されます。
改ページオプションにより各行ごとに改行されるのでページ分割されます。以上はビューのみの場合ですが、メインレポートの一覧のソースを右側のテーブルにしておけばグループ化の必要はなくなります。
個別に明示されていない限りgekkaがフォーラムに投稿したコードにはフォーラム使用条件に基づき「MICROSOFT LIMITED PUBLIC LICENSE」が適用されます。(かなり自由に使ってOK!)
- 回答としてマーク moon__moon 2012年8月13日 4:08
すべての返信
-
氏名を、項目とランクと同じtablix入れるレイアウトにできるなら、グルーピングするだけでOKです。
それが無理なら、私ならMicrosoftレポートを使うことをあきらめます;b- 回答としてマーク moon__moon 2012年8月13日 4:08
-
方法1 レポート1枚
メインレポートを作ります
データセットはサーバーから引っ張ってきたビューにしておきます。
レポートにテーブルを貼り付けます。
テーブルのプロパティで、データセットをビューに設定します。
行を選択してグループの追加->親グループの追加を選択します。
グループ化でnameフィールドを選択、グループヘッダーの追加もします。
詳細行に"項目"と"ランク"列を作ります。
グループヘッダーの適当な位置にプレースホルダでnameフィールドを設定しておきます。
グループのプロパティで改ページを"グループの各インスタンスの間"にチェックをします。あとは実行すると勝手にグループ化してくれます。
方法2 メイン+サブレポート
1枚に表示させたい内容のレポートをサブレポートで作ります。
データセットはサーバーから引っ張ってきたビューにしておきます。
サブレポートのパラメーターにname(テキスト)を追加します。
テーブルのプロパティで、データセットをビューに設定します。
テーブルに"項目"と"ランク"列を作ります。
テーブルのプロパティでフィルター式で
式 : name
演算子 : =
値 : 式=Parameters!name.Value
にします。
ついでに氏名の欄の式 : =Parameters!name.Value
メインレポートを作ります
データセットはサーバーから引っ張ってきたビューにしておきます。
レポートに一覧を貼り付けます。
一覧のプロパティで、データセットをビューに設定します。
一覧詳細行を選択してメニューで、行グループ->グループプロパティを開いて、グループ式の「グループ化の条件」をnameフィールドにします。ついでに改ページで改ページオプションで"グループの各インスタンスの間"にチェックします。
一覧内側のセル部分にサブレポートを貼り付けます。 <-ここがポイント
サブレポートのプロパティで、パラメーターに
名前 : name
値 : nameフィールド
を追加します。あとは実行すると、
メインレポートではname列をグループ化した一覧が作られます。
一覧の各行ごとにサブレポートが作られます。
サブレポートにも忘れずにデータセットを渡しておきましょう。
グループ化されたnameがサブレポートのnameパラメータに渡されます。
サブレポートではnameパラメーターでフィルタされたビューが表示されます。
改ページオプションにより各行ごとに改行されるのでページ分割されます。以上はビューのみの場合ですが、メインレポートの一覧のソースを右側のテーブルにしておけばグループ化の必要はなくなります。
個別に明示されていない限りgekkaがフォーラムに投稿したコードにはフォーラム使用条件に基づき「MICROSOFT LIMITED PUBLIC LICENSE」が適用されます。(かなり自由に使ってOK!)
- 回答としてマーク moon__moon 2012年8月13日 4:08