none
Microsoftレポートにおける各ページ毎のフィルタの設定について RRS feed

  • 質問

  • seika240640と申します。

    いつもお世話になっております。

    自身で調べて解決出来ず、度々問い合わせさせていただく形となってしまい非常に申し訳ないのですが、もし宜しければご教授いただければと思います。

    visualstudio2010Proに搭載されているMicrosoftレポート(asp.net  c#で作成)を使い、上記のようなデザインの成績表を作成したいと考えております。また、2ページ目に遷移した時にはBさんとBさんの項目に対する各ランクが表示され、3ページ目にはCさんが・・・という風にしたいと思っております。

    しかしここで止まってしまいました。

    テーブルやテキストボックスに設定するフィルターではフィルターにはじかれたデーターは2ページ目以降にも表示されなくなってしまいます。また、各レポートアイテムの長さを調整してもレイアウトが崩れてしまい使えませんでした。1ページ目にはAさんのデーター、2ページ目にはBさんのデーターのみを表示させる方法がありましたら教えていただけますようお願いいたします。なお、ページ毎にフィルターを掛けることが出来れば実現出来るかなと考えましたが、お心当たりがあればどのような方法でも構いません。

    なお、データーはSQLDBから取ってきており、以下の左側の“ビュー”をデータセットにしていますが、右側の“テーブル”もデーターセットとして取得して使用しても問題ありません。

    

    皆様側にはお手数をお掛けいたしますが、何卒アドバイスの程よろしくお願いいたします。

    2012年8月9日 8:02

回答

  • 氏名を、項目とランクと同じtablix入れるレイアウトにできるなら、グルーピングするだけでOKです。

    それが無理なら、私ならMicrosoftレポートを使うことをあきらめます;b
    • 回答としてマーク moon__moon 2012年8月13日 4:08
    2012年8月9日 8:55
  • 方法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
    2012年8月9日 10:28

すべての返信

  • 氏名を、項目とランクと同じtablix入れるレイアウトにできるなら、グルーピングするだけでOKです。

    それが無理なら、私ならMicrosoftレポートを使うことをあきらめます;b
    • 回答としてマーク moon__moon 2012年8月13日 4:08
    2012年8月9日 8:55
  • 方法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
    2012年8月9日 10:28
  • hihijiji様、gekka様

    seika240640と申します。
    いつもお世話になっております。

    ご返信ありがとうございます。
    いただいた意見を参考に作業を進めてみます。

    お忙しいところ、お時間を割きご返信いただきましたことまことにありがとうございます。

    2012年8月13日 4:08