none
DBNullについて RRS feed

  • 質問

  • こんにちは。

    VB2010にてツールを作成しております。

    VB2010とAccess2003のMDBテーブルと連携し、テキストボックスに入れた文字列にて該当するデータあった場合にDatagridviewに表示するツールを作成しております。

    他の質問を読んでみましたが、似たような事例が無く解決が困難である為、お力を借りられたらと思っております。

    テキストボックスの中に検索文字を入力し実行しますが、該当のカラムにNull(データの作成にオートナンバーを使用している為)が有る為に、「演算子 '=' は 型 'DBNull' と 文字列 "test" に対して定義されていません。」のエラーが出ます。

                Dim query = From row In Tbl _
                            Where row.Item("ユーザー名") = TextBox1.Text

    IsDBNullを記述すればいいのではと他の質問を見ておりましたがTextBoxを使用した方法が無くご教授頂ければと思います。

    宜しくお願いします

    • 種類を変更済み BOMD 2010年11月11日 4:55
    • 種類を変更済み BOMD 2010年11月11日 4:55
    • 種類を変更済み BOMD 2010年11月11日 4:55
    2010年11月10日 8:47

回答

  • これでは駄目ですか?

    Dim query = From row In Tbl Where row.Item("ユーザー名").ToString() = TextBox1.Text

    もっともクエリ側で ISNULL 関数を使って対処した方が速そうですが。。。


    ひらぽん http://d.hatena.ne.jp/hilapon/
    • 回答としてマーク BOMD 2010年11月11日 5:28
    2010年11月10日 9:01
    モデレータ
  • ふつうに

    Dim query = From row In tbl Where Not IsDBNull(row.Item("ユーザー名")) _
    AndAlso row.Item("ユーザー名") = TextBox1.Text

    で良いのでは?


    ひらぽんさんの書いたやり方だと、DBNull.Value.ToString() = String.Empty なのでTextBox1.Textが空だと一致しちゃいます。

    • 編集済み gekkaMVP 2010年11月10日 10:04 括弧がずれてましたorz
    • 回答としてマーク BOMD 2010年11月11日 5:28
    2010年11月10日 9:09

すべての返信

  • これでは駄目ですか?

    Dim query = From row In Tbl Where row.Item("ユーザー名").ToString() = TextBox1.Text

    もっともクエリ側で ISNULL 関数を使って対処した方が速そうですが。。。


    ひらぽん http://d.hatena.ne.jp/hilapon/
    • 回答としてマーク BOMD 2010年11月11日 5:28
    2010年11月10日 9:01
    モデレータ
  • ふつうに

    Dim query = From row In tbl Where Not IsDBNull(row.Item("ユーザー名")) _
    AndAlso row.Item("ユーザー名") = TextBox1.Text

    で良いのでは?


    ひらぽんさんの書いたやり方だと、DBNull.Value.ToString() = String.Empty なのでTextBox1.Textが空だと一致しちゃいます。

    • 編集済み gekkaMVP 2010年11月10日 10:04 括弧がずれてましたorz
    • 回答としてマーク BOMD 2010年11月11日 5:28
    2010年11月10日 9:09
  • ひらぽん 様

    どうも有難う御座います。

    Nullについての動きは完璧に思った通りに行きました。

    思っていたやり方と異なっておりさいらなる精進に励みたいと思います。

    アドバイスの方もありがとう御座います。

    今後の作成時の糧にさせて頂きます。

    2010年11月10日 9:10
  • > ひらぽんさんの書いたやり方だと、DBNull.Value.ToString() = String.Empty なのでTextBox1.Textが空だと一致しちゃいます。

    うを!ご指摘ありがとうございます。<(_ _;)>
    NULL値をどう扱うかという問題はありますが、gettaさんの方が素直な実装ですね(汗


    ひらぽん http://d.hatena.ne.jp/hilapon/
    2010年11月10日 9:20
    モデレータ
  • gekka 様

    終わったかと思えた質問にご返信頂き大変感謝です。

    そして返事が遅くなり申し訳ありません。

    正直gettaさんの方法で最初模索しており、おしい(プログラムにおしいとかあるわけではありませんが・・・)所まで出来ていたのでもう少し頑張ればよかったかもと思っております。

    前回の方法による解説も大変わかりやすく助かります。

    またの時には宜しくお願いします。

    2010年11月11日 4:46