新しく質問する

AccessでNULLのデータを判断する方法

役に立った:2件
  • 質問者:MMM-SRV
  • 投稿日時:2005/02/17 15:15
  • 困り度:すぐに回答が欲しいです

ご指導、宜しくお願い致します。

Accessを経由してPostgresのデータベースへ
データをインポートしていきたいのですが、
Accessから抽出したデータが空白か空白ではないのかを
判断させたいのですが、以下のように記述しているのですが、正しく判断されないようです。
どのように記述すればよいのでしょうか???

----------------------------------------
SQL="SELECT 単価,フラグ FROM AAA_TBL"
Set RS = Conn.Execute(SQL)

IF RS(0) = NULL THEN
 RESPONSE.WRITE "空白"
ELSE
 RESPONSE.WRITE "単価"
END IF

IF RS(1) = NULL THEN
 RESPONSE.WRITE "空白"
ELSE
 RESPONSE.WRITE "フラグ"
END IF
----------------------------------------

Accessdb:AAA_TBL
フィールド名/データ型
単価/INT4
フラグ/varchar

この質問への回答は締め切られました。
このQ&Aは役に立ちましたか?(役に立った:2件)
  • 参考になった:1件
  • 回答者:puzou
  • 回答日時:2005/02/17 17:49

こんばんは。
席をはずしておりました。

>NULLと「ゼロバイトの空白文字列」はどのように使い分けるものなのですか?
=====
使い分け、という観点ではないかもしれませんが、
Null=レコードが作られてからまだ一回もデータが入っていない。
""=何かデータが入ったことはあるが、削除された。
という違いがあります。
私の知ってる限り、MSSQLやORACLEにはこの概念(空白文字)はありません。
プログラムが煩雑になるだけであまり使い分けメリットは思い浮かびません…。
(強いて言うなら入力用テンポラリーのテーブルで、入力があったのかどうかの判別とか???)

>また、SELECTでデータを抽出した場合に、データがNULLなのか空白文字列なのかを判断する方法はあるのでしょうか?
=====
No3の方がされているように、やるしかないですねぇ。
せいぜい、1つのIF文にまとめるぐらいですか。。。

■パターン1
IF IsNull(RS(1)) = True or RS(1)="" Then
  strDate="Nullか空白"
ELSE
  strDate=RS(1)
END IF

■パターン2
IF IsNull(RS(1)) = True Then
  strDate="Null"
ELSEIF RS(1)="" Then
  strDate="空白"
ELSE
  strDate=RS(1)
END IF

通報する

この回答へのお礼

puzou様

回答ありがとうございました。
特別、データを扱う上で注意しなければいけないわけではなさそうですね。
参考になりました。今後とも宜しくお願い致します。

  • 参考になった:0件
  • 回答者:guruguru2
  • 回答日時:2005/02/17 16:12

こんにちわ。

>SELECTでデータを抽出した場合に、データがNULLなのか空白文字列なのかを判断する方法はあるのでしょうか?

この方法は、
IF IsNull(RS(1)) = True THEN
strDate="Nullです"
ELSE

IF RS(1) = "" THEN
strDate="空白文字列です"

ELSE
strDate=RS(1)
END IF

END IF

とするしかないかもです。

通報する

この回答へのお礼

guruguru2様

回答ありがとうございました。
参考にさせていただきます。

  • 参考になった:0件

No.2ベストアンサー10pt

  • 回答者:puzou
  • 回答日時:2005/02/17 15:30

こんにちは。
私もNo1さんが回答されている方法と同じです。
Accessには、Nullのほかに
「ゼロバイトの空白文字列」という概念がありますので
そちらも判定するといいと思います。
(Nullのフィールドに何かを入れて削除した場合はコレになります)
判定の仕方は、
IF RS(0) = "" Then …
です。

通報する

この回答へのお礼

puzou様
ありがとうございます。

>「ゼロバイトの空白文字列」という概念がありますので
>そちらも判定するといいと思います。

そうだったんですね。勉強になります。
もう少し教えてください。
NULLと「ゼロバイトの空白文字列」について・・・

NULLと「ゼロバイトの空白文字列」はどのように使い分けるものなのですか?
また、SELECTでデータを抽出した場合に、データがNULLなのか空白文字列なのかを判断する方法はあるのでしょうか?

  • 参考になった:0件

No.1ベストアンサー20pt

  • 回答者:guruguru2
  • 回答日時:2005/02/17 15:23

こんにちわ。
Null判定は、IsNull関数を使って行います。

IF IsNull(RS(0)) = TrueTHEN
 RESPONSE.WRITE "空白"
ELSE
 RESPONSE.WRITE "単価"
END IF

↑こんな感じに。
ヘルプにも載っていますので詳しくは参照してみてください。

通報する

この回答へのお礼

guruguru2様
ありがとうございます!!
関数を使ってあげればよかったんですね。
参考になりました。
今後とも宜しくお願い致します。

  
このQ&Aは役に立ちましたか?(役に立った:2件)

このページのトップへ