- PR -

RowFilterで数値比較を行いたい

1
投稿者投稿内容
ひろくん
会議室デビュー日: 2003/07/21
投稿数: 6
投稿日時: 2003-10-01 21:00
ひろと申します。質問させてください。

現在DataViewでRowFilterを使ってフィルタ処理をしています。
文字列の場合はいいのですが数値項目で単に dv.RowFilter = "Qty >= 10" としても
正しく表示できません。おそらく文字列比較されてしまっていると思われます。
これを特定の項目の場合のみ数値比較するということはできますか。

どうすればよいでしょうか。教えてください。よろしくお願いします。
ひろくん
会議室デビュー日: 2003/07/21
投稿数: 6
投稿日時: 2003-10-02 12:04
自己レスです。
数値比較はカラムのタイプをIntegerにすることで解決しました。
しかし今回の仕様は通常数値だが0は空白(NULL)で表示となっていたためタイプを変更できませんでした。
そこでConvert関数を使用したのですが空白だとエラーとなります。
なのでIIF関数で以下のようにしました。
"IIF(LEN(TRIM(Qty))=0,0,Convert(Qty,'System.Int64'))>=1000"
しかし空白が無い場合はうまくいくのですが空白があると数値変換エラーとなります。
ということは空白の場合でもConvertを実行している可能性があると思い、
Convertの部分を変更して"IIF(LEN(TRIM(Qty))=0,0,99999)>=1000"とすると空白があってもうまくいきます。空白の行は0に変換されているようです。
試しにISNULL関数を使っても同じでした。
"Convert(ISNULL(Qty,'0'),'System.Int64')>=1000"

これはなぜなのでしょうか?どなたかご存じありませんか?
1

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