• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセルVBA SQL構文 複数条件で検索方法)

エクセルVBAでの複数条件検索方法

このQ&Aのポイント
  • エクセルVBAでの複数条件でのデータ検索方法について困っています。
  • 検索値に空白がある場合に検索ができない問題があります。
  • IFステートメントやサブクエリを使った方法も考えましたが、うまくいきません。どのような方法がありますか?

質問者が選んだベストアンサー

  • ベストアンサー
noname#212058
noname#212058
回答No.2

WHERE (busyo = '" & 部署 & "' OR '" & 部署 & "' = '') AND ... のように、ひとつひとつの検索条件に OR 文で『空白の場合の条件』を加える方法があります。ただ、この方法の場合、DBのインデックスが効かなくなりますので検索パフォーマンスが遅くなるという問題が出る可能性があります。 やっぱり IF 文で判別するほうが良いかと思いますけどね。 sql = "SELECT ... WHERE " concatWord = "" IF 部署 <> "" THEN sql = sql & concatWord & "busyo = '" & 部署 & "'" concatWord = " AND " END IF IF 月 <> 0 THEN sql = sql & concatWord & "m2 = " & 月 concatWord = " AND " END IF :

ex1990
質問者

お礼

ありがとうございました。 無事仕上げることが出来ました。 この様な変数の使い方があったんですね。 目から鱗です。

その他の回答 (1)

noname#206655
noname#206655
回答No.1

データベースを作成する場合、「空白を許さない」ってのがありますので、必ず値が入ります。 もし、「月」が空白だったら、もし「13月」だったら、を検証し忘れるのが脆弱性となって現れます。 コーティング1/3、例外1/3、デバグ1/3と言います。面倒でも製品として仕上げるなら、入る前に考えうる例外処理をして欲しいと思います。 今回は「身長」という項目がありませんが、もし「3100mm」という値が来たら、体重「220t」という値が来たら、そんな常識ハズレな値が来たら・・・ 部署は「総務部」と「層無部」は違います。「そんな、常識はずれな値を設定する訳ねーだろ」と言いますが、これをチェックしてません。 SQL文に入る前に、値が枠内に入っているか検査します。(私の場合) 勉強だと思って、検査ルーチンを書くことをオススメします。

ex1990
質問者

お礼

勉強になります。 空白をチェックすることで、エラーが防げました。 ありがとうございます。