- ベストアンサー
エクセルVBAでの複数条件検索方法
- エクセルVBAでの複数条件でのデータ検索方法について困っています。
- 検索値に空白がある場合に検索ができない問題があります。
- IFステートメントやサブクエリを使った方法も考えましたが、うまくいきません。どのような方法がありますか?
- みんなの回答 (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 :
その他の回答 (1)
データベースを作成する場合、「空白を許さない」ってのがありますので、必ず値が入ります。 もし、「月」が空白だったら、もし「13月」だったら、を検証し忘れるのが脆弱性となって現れます。 コーティング1/3、例外1/3、デバグ1/3と言います。面倒でも製品として仕上げるなら、入る前に考えうる例外処理をして欲しいと思います。 今回は「身長」という項目がありませんが、もし「3100mm」という値が来たら、体重「220t」という値が来たら、そんな常識ハズレな値が来たら・・・ 部署は「総務部」と「層無部」は違います。「そんな、常識はずれな値を設定する訳ねーだろ」と言いますが、これをチェックしてません。 SQL文に入る前に、値が枠内に入っているか検査します。(私の場合) 勉強だと思って、検査ルーチンを書くことをオススメします。
お礼
勉強になります。 空白をチェックすることで、エラーが防げました。 ありがとうございます。
お礼
ありがとうございました。 無事仕上げることが出来ました。 この様な変数の使い方があったんですね。 目から鱗です。