- PR -

DataViewでNULL値のRowFilter

1
投稿者投稿内容
ぼぼ
会議室デビュー日: 2006/05/07
投稿数: 10
投稿日時: 2007-01-26 18:03
DataViewのRowFilterを使いデータ型(System.Int16)の列
に含まれているNull値にフィルターをかけたいと思っているのですが、
下記のようなエラーが出てしまいます。
数値型の列のNull値にフィルターを掛ける方法を教えてください。

列:System.Int16型
TestView.RowFilter="Isnull(TestColumn,'Null Column') = 'Null Column'";
TestView.Sort=null;

:エラー文:
System.Int16 および System.String で '=' 操作を実行できません。
ぽぴ王子
ぬし
会議室デビュー日: 2006/03/24
投稿数: 475
お住まい・勤務地: お住まい:城・勤務地:城
投稿日時: 2007-01-26 18:28
引用:

:エラー文:
System.Int16 および System.String で '=' 操作を実行できません。


このエラー文が何を指しているかを考えると、だんだんとわかってくるかもしれません。

列は System.Int16 型ですから、それと System.String 型を '=' 操作で比べ
ようとしているからエラーになっているわけですよね。これはエラーメッセージの通りなので、
理解していただけると思います。

じゃあなんで System.Int16 と System.String が比較されようとしているのか、
と言えば。

引用:

TestView.RowFilter="Isnull(TestColumn,'Null Column') = 'Null Column'";


この RowFilter で、IsNull を使って NULL だった場合は 'Null Column' という
文字列 に変換していますよね。でも NULL じゃない場合はどうなるでしょう。列の内容
そのままを比較しようとしますから、System.Int16 と 'Null Column' の
System.String を比較しようとします。なのでエラーが発生しているわけです。

こういった場合は、もう少し単純に

コード:

TestView.RowFilter = "TestColumn IS NULL";


で良さそうですが、それではダメでしょうか。
_________________
ぽぴ王子@わんくま同盟
ぽぴ王子の人生プログラミング中 / ぽぴンち。
ぼぼ
会議室デビュー日: 2006/05/07
投稿数: 10
投稿日時: 2007-01-26 18:52
ぽぴ王子 さん返答ありがとうございます。

ご指摘の通りできました。ありがとうございました。
1

スキルアップ/キャリアアップ(JOB@IT)