0
なぜQueryBuilderはクエリを変更しますか?回避策はありますか?QueryBuilder入力クエリの変更
以下のクエリを入力すると、QueryBuilderは下のより複雑なバージョンにクエリを変更し、FillByメソッドの追加パラメータが必要になります。追加パラメータを追加すると、変更されたクエリに指数関数的な複雑さが加わります。
を入力:
SELECT prop, lot, type, created_on, done
FROM TestSelection
WHERE (prop=? OR '_NO_PROP_'=?) AND (lot=? OR '_NO_LOT_'=?)
が変更された:
SELECT prop, lot, type, created_on, done
FROM TestSelection
WHERE (prop = ?) AND (lot = ?) OR
(prop = ?) AND ('_NO_LOT_' = ?) OR
(lot = ?) AND ('_NO_PROP_' = ?) OR
('_NO_LOT_' = ?) AND ('_NO_PROP_' = ?)
目標:ユーザーが小道具、たくさん、またはその両方で検索できるようにします。私の実際のプログラムは、いくつかの追加のフィールドを照会します。
注:
- のWinFormsプロジェクト(VB.NET該当する場合)
- TestSelectionは、私がQueryBuilderのいずれかのWHERE条件を削除することを決定したMicrosoft Accessデータベース
まず、どちらか一方または両方で検索したい場合、クエリは単純にprop =ですか? ORロット=?現在、検索はpropまたは_no_prop_に存在する必要があり、ロットまたは_no_lot_に存在する必要がありますが、これは意図していますか? クエリービルダーが自動的にAnd()グループを配布しているようです... – EtherDragon
対応するフィールドが空の場合、VBコードに定数 '_NO_PROP_'と' _NO_LOT_'を指定します。いいえ、ORではなくANDでなければなりません。 rewordされる条件は、(prop:指定されていないORが一致する)AND(ロット:指定されないORがマッチする)の場合に行を返します。 – Steven
は、したがって、次の組み合わせが行を返す: A指定されていないとB、 Aが一致し、Bを指定していない指定されていない、 A指定され、Bが一致し、 Aが一致し、Bは と一致していないが、あなたが期待するもの、それらの条件はありますか? – EtherDragon