- - PR -
DBのデータのNull判定について
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2008-04-20 15:07
WindowsXP VB2005EEでDbはAccess2003を使ってWindowsアプリケーションを作っています。
DBから読み込んだデータにNULLがあるかどうかの判定方法をお尋ねします。 下記過去ログで次のようなテストを行いましたがうまく動作しません。 http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=3956&forum=7
エラー内容は「「テーブル() 'n0販売' にある列 '備考' の値は DBNull です。」 確かにインデックスゼロの備考はヌルですがコンパイルエラーで上記のエラーメッセージが 出てしまいます。ソースに何か問題があるのでしょうか。よろしくお願いいたします。 | ||||
|
投稿日時: 2008-04-20 15:16
NAL-6295です。
型付DataSetの場合、特に設定をしなければ備考プロパティ内でDBNullの時、例外を発行するようになっていますので、その前にIs備考NullでNullかどうかの検証をする必要があります。 具体的には以下のような感じです。
| ||||
|
投稿日時: 2008-04-20 15:41
NAL-6295さん、早速の回答ありがとうございました。
何度もURLのテストを行ったのにうまくいかなかったのですが、NAL-6295さんの具体例で 見事に判定できました。回答いただきました内容をまだ理解できていませんが、次のように理解して いいのでしょうか。 ・「型付」とは型指定したDataSetの意味でしょうか? ・「備考プロパティ内でDBNullの時、例外を発行するようになっています」とは 「Dim obj As Object = Me.DataSet1.n0販売(0).備考」などとオブジェクトに入れるのではなく 備考を直接Is備考Null で判定する。という意味でしょうか。 どちらにしても解決できました。もし回答いただけなくても自分で勉強いたします。 本当にありがとうございました。 | ||||
|
投稿日時: 2008-04-20 18:17
NAL-6295です。
そういう理解で良いと思います。 Null許可の項目については、Is項目名Nullというのが一緒に作られていますので、そちらで判断しましょう。 直接項目名のプロパティにアクセスする前にIs項目名Nullでチェックした方が良いというのは、自動生成されているロジックを見ると(項目名のプロパティに合わせて右クリックで定義に飛べます。)よくわかると思います。 もしくは、型付DataSetを作る過程でString型の項目に関しては、Null時の動作を設定できますので(例外を発行するのか(Default)、何もしないのか、String.Emptyを返すのか)そちらで設定するのもありです。 | ||||
|
投稿日時: 2008-04-20 20:19
NAL-6295さん、ありがとうございました。自動生成されているロジックを見てもそれを解読する力がありませんが「Public Property 備考() As String」のロジックよりも先にIs項目名Nullを使って判定しないと例外的エラーが発行されるように理解いたしました。
本当にありがとうございました。 [ メッセージ編集済み 編集者: One.net 編集日時 2008-04-20 20:20 ] |
1