投稿日 | : 2003/07/31(Thu) 10:33 |
投稿者 | : TM |
Eメール | : |
URL | : |
タイトル | : Re^2: データベースの値との比較について |
> > >sql="SELECT COUNT(*) FROM TABLE1" _
> > > & "WHERE TABLE1.DATA1 = '" & VB.Text & "'"
> >
> > 先にVB.TextがNULL(もしくは空値)かどうかを判定し、
> > その場合は、
> > SELECT COUNT(*) FROM TABLE1
> > WHERE TABLE1.DATA1 IS NULL
> > を発行すればよろしいかと思われます。
>
> だいさん、ありがとうございます。
> そういう手がありましたね。
> しかし、実際の処理は値の比較が50ほどありまして、
> 教えていただいた方法ですと、かなりのコーディング量になってしまいます。
> やはりSQL文だけで対処するのは無理なのでしょうか?
> なければ教えていただいた方法で行こうと思っております。
これって、VB.TextがNULLだったら"TABLE1.DATA1 IS NULL"、
そうでなかったら"TABLE1.DATA1 = '" & VB.Text & "'"
としたいってことですよね。
("TABLE1.DATA1 IS '" & VB.Text & "'"ではダメだし)
そうだとしたら、SQL文というよりも文字列の操作だと思います。
sql="SELECT COUNT(*) FROM TABLE1 WHERE TABLE1.DATA1 " _
& IIf(IsNull(VB.Text), "IS NULL", "= '" & VB.Text & "'")
とかするしかないのでは。
IIfはIf文の省略形?なので、だいさんのいうように
sql="SELECT COUNT(*) FROM TABLE1 WHERE TABLE1.DATA1 "
If IsNull(VB.Text) Then
sql = sql & "IS NULL"
Else
sql = sql & "= '" & VB.Text & "'"
End If
とするのとコーディング量は大して変わらないかも知れませんが。