SQLの条件式を動的に作る

データの検索条件に汎用性を持たせるため、エンドユーザ側で条件や値を選べるようにしたいと思います。
とりあえず、今回はBindingSourceにフィルターを掛けるだけの簡単な内容とします。
まず、前回の記事をベースに4つのオブジェクトを追加します。
・Button2・・・フィルター実行ボタン
・ComboBox1・・・検索項目(列名)
・ComboBox2・・・検索条件(論理演算子)
・TextBox1・・・検索値
201603061

ComboBox1(項目)のItemsには列名を追加します。
ComboBox1のText値で取得するので、実際の列名と同名にします。
201603062

ComboBox2(条件)のItemsには下図の検索条件を追加します。
演算子は使い手に分り易くしているだけです。プログラム上はIndex値で取得させるので、そこまで書かなくても大丈夫です。
201603063

最後に、Button2のクリックで以下のコードを記載します。

これを実行すると、下図の通りBindingSourceにフィルターを掛けられます。

201603064

ちなみに演算子IN句を選択した場合の使い方としては、値1,値2,値3,…とカンマ区切りだけで、条件式を生成する様にしてます。
あと、フィルター解除は「BindingSource1.Filter = Nothing」です。

【項目】【値】【条件】の3要素をエンドユーザに選択させるだけで、SQL文を意識せず簡単に検索が出来るようになります。
今回は、BindingSourceに対してフィルターを掛けるだけですが、応用するとデータベース検索向けのSQL文を生成できますので汎用性はあるかと思います。