none
Microsoftレポート パラメーター設定方法 RRS feed

回答

  • ReportViewerの貼ってあるページをデザイン表示して、ReportViewer.LocalReport.DataSourcesに設定しているObjectDataSource1を右クリックして、データソースの構成を設定し直しましたか?

    おそらくパラメータ無しの時点で設定したままになっているため、Select操作で使用するメソッドがTableAdapter.GetData()のままになっていると思われます。
    これを改めてTableAdapter.GetData(int p1)に設定しなおしてやる必要があります。(引数のデータ型はパラメータの型による)
    そうするとパラメータ定義画面が出てくるのでパラメータに入れる値を設定してやります。

    #ASP.netは全然つかってないのでWinFormとは勝手が違うなぁ


    個別に明示されていない限りgekkaがフォーラムに投稿したコードにはフォーラム使用条件に基づき「MICROSOFT LIMITED PUBLIC LICENSE」が適用されます。(かなり自由に使ってOK!)

    • 回答としてマーク aquq 2012年9月6日 13:10
    2012年9月6日 3:51
  • 参考資料は読んでいませんが、質問にアップされていた画像のエラーメッ
    セージからエラーの原因は推定できますので、とりあえずそれを書いてお
    きます。

    エラーメッセージの意味は「引数なしの GetData メソッドを探したが見つ
    からなかった」ということです。

    ご自分の ObjectDataSource1 のソースを見てください。

    ObjectDataSource1 は、TypeName プロパティに指定された TableAdapter
    クラスに、SelectMethod プロパティに指定された名前のメソッド(今回の
    場合 GetData)を探しに行きます。画像からは、そのあたりの設定は正し
    くされているように見えます。

    しかし、SelectParameters が設定されてない(以下のページのコードを例
    に取ると <selectparameters> ...  </selectparameters> が存在しない)
    のではないですか? その場合、ObjectDataSource1 は引数がないと判断し
    て、引数なしの GetData メソッドを探しに行きます。

    ObjectDataSource.SelectParameters プロパティ
    http://msdn.microsoft.com/ja-jp/library/system.web.ui.webcontrols.objectdatasource.selectparameters%28v=vs.100%29.aspx

    一方、ウィザードで型付 DataSet + TableAdapter を作ると、SELECT クエ
    リに合わせて、TableAdapter には GetData(int p1) というシグネチャの
    メソッドが自動生成されているはずです(TableAdapter のソースを確認し
    てください)。

    TableAdapter には、引数なしの GetData メソッドは存在しないはずです。
    存在しないので、見つからないというエラーになったと思われます。

    上記の推定が正しければ、SelectParameters を正しく設定すれば解決する
    はずです。どのように設定するかは、p1 をどこから、どのタイミングで、
    どのように取得するかによります。質問には、それらの情報が具体的に書
    いてないので、回答者側ではどのように設定すればよいかは分かりません。

    • 回答としてマーク aquq 2012年9月6日 13:10
    2012年9月6日 11:53

すべての返信

  • ReportViewerの貼ってあるページをデザイン表示して、ReportViewer.LocalReport.DataSourcesに設定しているObjectDataSource1を右クリックして、データソースの構成を設定し直しましたか?

    おそらくパラメータ無しの時点で設定したままになっているため、Select操作で使用するメソッドがTableAdapter.GetData()のままになっていると思われます。
    これを改めてTableAdapter.GetData(int p1)に設定しなおしてやる必要があります。(引数のデータ型はパラメータの型による)
    そうするとパラメータ定義画面が出てくるのでパラメータに入れる値を設定してやります。

    #ASP.netは全然つかってないのでWinFormとは勝手が違うなぁ


    個別に明示されていない限りgekkaがフォーラムに投稿したコードにはフォーラム使用条件に基づき「MICROSOFT LIMITED PUBLIC LICENSE」が適用されます。(かなり自由に使ってOK!)

    • 回答としてマーク aquq 2012年9月6日 13:10
    2012年9月6日 3:51
  • 参考資料は読んでいませんが、質問にアップされていた画像のエラーメッ
    セージからエラーの原因は推定できますので、とりあえずそれを書いてお
    きます。

    エラーメッセージの意味は「引数なしの GetData メソッドを探したが見つ
    からなかった」ということです。

    ご自分の ObjectDataSource1 のソースを見てください。

    ObjectDataSource1 は、TypeName プロパティに指定された TableAdapter
    クラスに、SelectMethod プロパティに指定された名前のメソッド(今回の
    場合 GetData)を探しに行きます。画像からは、そのあたりの設定は正し
    くされているように見えます。

    しかし、SelectParameters が設定されてない(以下のページのコードを例
    に取ると <selectparameters> ...  </selectparameters> が存在しない)
    のではないですか? その場合、ObjectDataSource1 は引数がないと判断し
    て、引数なしの GetData メソッドを探しに行きます。

    ObjectDataSource.SelectParameters プロパティ
    http://msdn.microsoft.com/ja-jp/library/system.web.ui.webcontrols.objectdatasource.selectparameters%28v=vs.100%29.aspx

    一方、ウィザードで型付 DataSet + TableAdapter を作ると、SELECT クエ
    リに合わせて、TableAdapter には GetData(int p1) というシグネチャの
    メソッドが自動生成されているはずです(TableAdapter のソースを確認し
    てください)。

    TableAdapter には、引数なしの GetData メソッドは存在しないはずです。
    存在しないので、見つからないというエラーになったと思われます。

    上記の推定が正しければ、SelectParameters を正しく設定すれば解決する
    はずです。どのように設定するかは、p1 をどこから、どのタイミングで、
    どのように取得するかによります。質問には、それらの情報が具体的に書
    いてないので、回答者側ではどのように設定すればよいかは分かりません。

    • 回答としてマーク aquq 2012年9月6日 13:10
    2012年9月6日 11:53
  • gekka様、SurferOnWww様

    ご回答いただきましてありがとうございました。

    回答をよく読んでいろいろと試してみます。

    2012年9月6日 13:10
  • > 回答をよく読んでいろいろと試してみます。

    回答の内容が理解できてないように思えますが大丈夫ですか? もしそうであれば、スレッドをクローズしないで、不明な点を質問し、解決するまで続けることをお勧めします。

    回答者のほうも、せっかく回答したのに中途半端に終わったのでは、回答し甲斐がないです。

    2012年9月8日 4:46
  • SuferOnWww様

    ご丁寧にありがとうございます。

    評価を行うのにもう少し時間がかかるため、取り急ぎお礼をさせていただいた次第です。

    評価を行った結果をまたご報告させていただきます。

    2012年9月10日 13:31
  • 本件下記2件の対応でパラメーターを渡すことが一応出来ました。

    ●追加1
    ObjectDataSourceタグ内に
    「<selectparameters><asp:querystringparameter name="p1"defaultvalue="1" /></selectparameters>」
    <selectparameters>を追加 </selectparameters>

    <selectparameters>

    ●追加2
    if (!Page.IsPostBack)
    {
     ReportParameter p = new ReportParameter("p1","1");
     ReportViewer1.LocalReport.SetParameters(p);
    }
    を追加

    ただし、パラメーターの値を変えたい場合に追加1側のdefaultvalueと追加2側の値(上記で言うコード3行目「"1"」の部分)を共に同じ数字に変えなければ結果が表示されず以下のようになりました。追加1側のdefaultvalueだけ値を変えても以下のようになりますし、追加2側の値を変えても以下のようになってしまいます。</selectparameters>

    <selectparameters>defaultvalueのパラメーターごと消せば良いのかと試したのですが、それも結果に変化はありませんでした。 </selectparameters>

    <selectparameters></selectparameters>

    <selectparameters>defaultvalueによって入力された値はコードによって上書きされると思ったのですが上手くいきません。
    もし</selectparameters><selectparameters>理由が分かればで構いませんので教えていただきたいと思います。</selectparameters>

    
    
    
    
    
    
    

    • 編集済み aquq 2012年9月12日 5:43 誤字修正
    2012年9月12日 5:42
  • > defaultvalueによって入力された値はコードによって上書き
    > されると思ったのですが上手くいきません。

    QueryStringParameter の使い方を理解して使っていますか?

    クエリ文字列から p1 の値を渡さなければならないのですが、渡
    されていないから defaultvalue="1" の 1 が GetData(int p1)
    の p1 に渡されているのだと思います。

    (クエリ文字列の意味が分らなければ、ググるなどして調べてく
    ださい)

    「追加2」のコードは関係なくて、これをコメントアウトしても
    結果は変わらないのでは? コメントアウトして defaultvalue
    を変えると、その値によって正しく選択された結果が表示されま
    せんか?

    そうであれば、クエリ文字列で p1 を正しく渡せばうまくいくは
    ずです。

    でも、実際は p1 はクエリ文字列で渡すのではないのでは? 

    先のレスで紹介したページでは QueryStringParameter が使われ
    ていますが、他にも目的に応じていろいろあります。

    ParameterCollection クラス
    http://msdn.microsoft.com/ja-jp/library/system.web.ui.webcontrols.parametercollection%28v=vs.90%29.aspx

    前のレスでも書きましたが、p1 をどこから、どのタイミングで、
    どのように取得するか詳細を書いてください。それが分らないと
    何をどのように使えばよいかの回答はできません。

    2012年9月12日 12:07
  • SuferOnWww 様

    度々ご丁寧に教えていただきましてありがとうございます。

    せっかくコメントいただいていますが、まだ評価を行えていません。

    評価を行いましたらまたご連絡させていただきます。

    取り急ぎお礼まで

    
    2012年9月20日 8:07
  • 質問を続けるのであれば「回答としてマーク」は外した方がいいです。

    そうしないと、新しい書き込みがあっても気づかれ難いです。また、未解決になっていると他の人が注目してくれるチャンスが増えるので、回答も得やすいと思います。

    2012年9月21日 5:26