VB6.0用掲示板の過去のログ(No.1)−VBレスキュー(花ちゃん)
[記事リスト] [新規投稿] [新着記事] [ワード検索] [過去ログ] [管理用]

投稿日: 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
とするのとコーディング量は大して変わらないかも知れませんが。


- 関連一覧ツリー (★ をクリックするとツリー全体を一括表示します)

- 返信フォーム (この記事に返信する場合は下記フォームから投稿して下さい)

- Web Forum -