条件分岐。

(考え方の問題だから、どんなのでも共通だけど、今回はVB6.0+Oracle9i)

入力フォーム(textbox)が3つあります。あと、検索ボタン。

フォームはそれぞれ「商品名(txtName)」「メーカー(txtMaker)」「販売会社(txtTrader)」としましょうか。

んでもって、検索がしたいのです。
フォームに文字が入力されていれば、検索条件に加える。
されていなければ、それについては「指定なし」とみなす。

ほい。
ワタクシ、とってもおばかさんというか、もう・・・ね。

さらしたくないけどあえて書きましょう。

Oracle(DB)のテーブル:PRODUCT_TABTLE
フィールド名:それぞれ[NAME][MAKER][TRADER]

'それぞれについて、空白かどうかを判断。
'入力があれば検索条件に加える。
if txtName.text <> "" AND txtMaker.text <> "" then txtTrader.text <> "" then _
	SQL= "SELECT * FROM PRODUCT_TABLE WHERE NAME = '" & txtName.text "' AND MAKER = '" & txtMaker.text &_
	 "' AND TRADER = '" & txtTrader.text & "' " 
if txtName.text = "" AND txtMaker.text < > "" then txtTrader.text <> "" then _
	SQL= "SELECT * FROM PRODUCT_TABLE WHERE MAKER = '" & txtMaker.text & "' AND TRADER = '" & txtTrader.text & "' " 

if txtName.text <> "" AND txtMaker.text = "" then txtTrader.text <> "" then _
	SQL= "SELECT * FROM PRODUCT_TABLE WHERE NAME = '" & txtName.text "' AND TRADER = '" & txtTrader.text & "' " 
・
・
・
ってのを、あほみたいに組み合わせ分書いてわけですわ。(「みたい」じゃなくて、ほんまのあほですが。)
で、これVBで組み終わって、Webで見たいからってんで、ASPお勉強中に発見したサンプル。
いたく感動いたしましたよ。

SQL="SELECT * FROM PRODUCT_TABLE "

'商品名
If txtName.text <> " " Then
	If flag=False Then SQL=SQL & "WHERE "
	SQL=SQL & "NAME=' " & Name.text & "' "
	flag=True
End If
'メーカー
If txtMakerName.text <> "" Then
	If flag Then
		SQL=SQL & "AND "
	Else
		SQL=SQL & "WHERE "
	End If
	SQL=SQL & "MAKER = ' " & txtMaker.text & "' "
	flag=True
End If
'販売会社
If txtTrader.text <> " " Then
	If flag Then
		SQL=SQL & "AND "
	Else
		SQL=SQL & "WHERE "
	End If
	SQL=SQL & "TRADER = '" & txtTrader.text & "' "
	flag=True
End If

商品名から順番に、入力があるかどうかを見ていって、入力があった時点でflgをたてる。
で、その後は、flgがたっていれば条件はANDで、なければWHEREで追加していくと。
これなら入力がいくつあっても大丈夫ですな?
ワタクシが上で書いたのとは雲泥の差ですな?

でも、今回、大元のプログラムのほうは書き直すのがめんどくさくて放置です。
(こういう考え方してるからダメなんだよなぁ・・・。)
後から見て、限りなく解読しにくいものに仕上がっております・・・。