[pgsql-jp: 34357] Re: VB6でNULL の検出

tome34 nito @ a2.mbn.or.jp
2004年 11月 30日 (火) 23:16:51 JST


さかもと様、早速ご教授ありがとう御座います。私には非常にありがたいご教授でし
た。
これって結構VB+PostgreSQLでアプリ開発行っている人には重要な事ではないでしょ
うか?

実験しましたが、確かに変数がStringあるいはVariantの場合はエラーがでません。
但し、変数が数値変数(Integer or Long or Currency or Single or Double)の場合
は、
エラーコード13[型が一致しません]が出ます。
おそらくsum関数を使った場合、数値変数への代入が大半の想定される処理だと思いま
すが、
この場合String あるいは Variant 型変数に代入してからValで数値変数に代入する
事に
なりますが、そんな感じで使用と言う事でしょうか?、、、、たぶんそーですネ!
それでも、コーディング的にはエラートラップで処理するよりは結構楽になる気はしますが、
やっぱ面倒くさい気がします。ひとつの代入に付き+1〜2Lineのコーディングが必
要になり
ますよね? 他のDBでも同じなんでしょうか?
該当がなかったら(0 rows)で返して貰ったほうがVB系アプリでは非常に使い勝手がい
いよ
うに思えますが、そーは出来ないもんなんでしょうか?
PGのコーディングの面倒臭さは結構使用の躊躇(DB選択について)になるような気がし
ますが??
どう言う理由でNullを返す仕様になっているのかご存知の方がいましたら教えていた
だけ
ないでしょうか?

> 私も以前どこかで教えてもらったんですが、こんな感じでOKですよ。
>
> 変数=レコードセット!フィールド & ""

−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
宇野様、ご回答ありがとう御座います。

> SELECT SUM(COALESCE(c,0)) AS csum FROM t
> こうすると、cがNULLの部分を0とみなして合計を計算します。

COALESCEは知らなかったので参考になりました。
只、私の行っている処理ではフィールドにNullが入っているわけではなく、条件に合
う
該当データがない為にsumの結果としてNullが返って来ています。
ので、実験しましたがやっぱり返ってくるのはVBでは扱い辛いNullでした。
該当するcそのものが存在しないと言う状況で実行された選択クエリー中のsum関数
と言うことです。





pgsql-jp メーリングリストの案内