none
BindingSource.Filterについて RRS feed

  • 質問

  • NavFixという名のデータベースに"ID","WYP","Lat","Lon"なるフィールドがあります。
    各フィールドは"ID"が数値、"WYP"が文字列(5バイト)、"Lat"が数値、"Lon"が数値です。

    私が行いたいことは...
    テキストボックスに入力した文字列を、"WYP"フィールドからフィルター機能を使って抽出したいのです。

    例えば、テキストボックスに「WALTZ」と入力して、ボタンを押すと...
    DataGridViewに対象となるWALTZに対応した数値を表示したいと考えています。

    "ID" "WYP"  "Lat""Lon"
     2354 WALTZ 234 634
     7456 WALTZ 845 592

    という具合です。対象は必ずしも1つではなく、複数存在するため、Filterの使用を考えた次第です。

    初心者向けの本を読みながらプログラムを書いていると、

    navFixBindingSource.Filter ="WYP ='WALTZ'";

    なるコードまではたどり着いたのですが、この場合だと、シングルクオテーションに囲まれた'WALTZ'のファイルターはできますが、テキストボックスに入力した文字列をフィルターに掛けることができません。

    どのようにすれば、テキストボックスに入力した文字列をファイルターに掛けることができるのでしょうか?

    非常に初歩的な質問ですが、どうかよろしくお願い致します。

    2009年11月24日 15:30

回答

  • ↓みたいなことがしたいということですか??
    navFixBindingSource.Filter = "WVP = '" + textBox1.Text + "'";

    textBox1.Textの値が正しいかどうかは事前に検証してくださいね~。
    かずき Blog:http://blogs.wankuma.com/kazuki/
    2009年11月25日 3:35
  • コードとしては、少し変えれば良いだけなのですが、文献やインターネットで探しましたが、全く分かりませんでした。
    この種の問題に直面した時の解決法とかはないものなのかと考えています。アドバイスがありましたらお願いします。

    あまりにも初歩的な質問で申し訳ありませんでしたが、また何かありましたら、よろしくお願い致します。


    まずは C# の基本から勉強すべきでしょうね。
    基礎がしっかりできてくると、いざというとき応用が効くようになりますよ。
    たとえばこんな本で勉強してみるとか・・・

    http://www.amazon.co.jp/dp/4774129453/ref=pd_sim_b_2
    http://www.amazon.co.jp/dp/4899771975/ref=pd_sim_b_1

    私は二つとも読んだことがないのですが、こういう初心者向けの本で基礎からしっかり勉強したり
    初心者~中級者向けのTIPS 集とか読むといいと思います。

    2009年11月25日 4:19
    モデレータ
  • Fillterプロパティに、「列名 = '値'」を指定すればいい
    値はTextBoxのTextプロパティにしたい

    ということで、"列名 = '" + textBox.Text + "'"になります。
    非常に安直なコードなので、例えばTextBoxに '(シングルクォート)なんか入れると
    多分思った動作をしてくれないと思います。
    後は、' OR '1' = '1と入力しても意図した動作にならないかな・・・?
    かずき Blog:http://blogs.wankuma.com/kazuki/
    2009年11月25日 11:53

すべての返信

  • ↓みたいなことがしたいということですか??
    navFixBindingSource.Filter = "WVP = '" + textBox1.Text + "'";

    textBox1.Textの値が正しいかどうかは事前に検証してくださいね~。
    かずき Blog:http://blogs.wankuma.com/kazuki/
    2009年11月25日 3:35
  • a_かずき_ さん、ありがとうございます。

    昨晩、何とか実現させようと頑張りましたが、夢潰えて寝てしまいました。

    掲載されているとおりに実行したところ、私のやりたいことができました。
    昨晩のイライラと苦労は何だったのだろうかと考えてしまいます。

    コードとしては、少し変えれば良いだけなのですが、文献やインターネットで探しましたが、全く分かりませんでした。
    この種の問題に直面した時の解決法とかはないものなのかと考えています。アドバイスがありましたらお願いします。

    あまりにも初歩的な質問で申し訳ありませんでしたが、また何かありましたら、よろしくお願い致します。

    2009年11月25日 4:05
  • コードとしては、少し変えれば良いだけなのですが、文献やインターネットで探しましたが、全く分かりませんでした。
    この種の問題に直面した時の解決法とかはないものなのかと考えています。アドバイスがありましたらお願いします。

    あまりにも初歩的な質問で申し訳ありませんでしたが、また何かありましたら、よろしくお願い致します。


    まずは C# の基本から勉強すべきでしょうね。
    基礎がしっかりできてくると、いざというとき応用が効くようになりますよ。
    たとえばこんな本で勉強してみるとか・・・

    http://www.amazon.co.jp/dp/4774129453/ref=pd_sim_b_2
    http://www.amazon.co.jp/dp/4899771975/ref=pd_sim_b_1

    私は二つとも読んだことがないのですが、こういう初心者向けの本で基礎からしっかり勉強したり
    初心者~中級者向けのTIPS 集とか読むといいと思います。

    2009年11月25日 4:19
    モデレータ
  • Fillterプロパティに、「列名 = '値'」を指定すればいい
    値はTextBoxのTextプロパティにしたい

    ということで、"列名 = '" + textBox.Text + "'"になります。
    非常に安直なコードなので、例えばTextBoxに '(シングルクォート)なんか入れると
    多分思った動作をしてくれないと思います。
    後は、' OR '1' = '1と入力しても意図した動作にならないかな・・・?
    かずき Blog:http://blogs.wankuma.com/kazuki/
    2009年11月25日 11:53
  • こんにちは、フォーラムオペレーターの高橋春樹です。

    a_かずき_さん、ひらぽんさん、ご投稿ありがとうございました。

    SuperBeginnerさん、初めまして。
    MSDNフォーラムのご利用ありがとうございます。

    a_かずき_さんからのアドバイスが、問題解決に繋がったようで良かったです。
    ひらぽんさんからご紹介のあったページも是非確認してみてくださいね。

    今回、a_かずき_さんと、ひらぽんさんからの投稿が、有用な情報だと思いましたので、
    勝手ながら、皆様の投稿に、回答マークを付けさせてもらいました。

    今後ともMSDNフォーラムをよろしくお願いします(^_^)


    マイクロソフト株式会社 フォーラム オペレーター 高橋春樹
    2009年12月2日 9:38