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是在Microsoft Access數據庫
首先,如果你想通過其中之一或兩者進行搜索,那麼查詢應該簡單地是prop =? OR lot =?目前,搜索需要存在於prop或_no_prop_中,以及存在於lot或_no_lot_中,這是否意味着? 它看起來像查詢生成器是自動分發和跨()分組... – EtherDragon
如果相應的字段爲空,我會在VB代碼中提供常量'_NO_PROP_'和'_NO_LOT_'。不,它應該是'AND'而不是'OR'。如果(prop:未指定或匹配)AND(批次:未指定或匹配),則重新編寫的條件將返回一行。 – Steven
所以下面的組合返回行: 沒有規定A和B未指定, A匹配,未指定B, 一個不指定AND B相匹配, A匹配b匹配 是那些條件,你期待什麼? – EtherDragon