首先我們需要知道在Access中null和空字符串是不同的,因此如果處理不好該問題就會帶來不少麻煩,特別是在混合查詢中。
(推薦教程:access數(shù)據(jù)庫學(xué)習(xí))
解決方法如下:
var ?SQLStr:string; begin // ??SQLStr?:=?'select?*?from?ordertb?where?1>0'; ??if?Trim(Edit1.Text)''?then ??SQLStr?:=?SQLStr?+'?and?serialid?like?:a'; ??if?Trim(Edit2.Text)''?then ??SQLStr?:=?SQLStr?+'?and?pname?like?:b'; ? ??with?ADOQuery1?do ??begin ????Close; ????SQL.Clear; ????SQL.Add(SQLStr); ????if?Trim(Edit1.Text)''?then ????Parameters.ParamByName('a').Value?:=?'%'+Trim(Edit1.Text)+'%'; ????if?Trim(Edit2.Text)''then ????Parameters.ParamByName('b').Value?:=?'%'+Trim(Edit2.Text)+'%'; ????Open; ??end; end;
或者:
begin?? ??with?ADOQuery1?do ??begin ????Close; ????SQL.Clear; ????SQL.Add('select?*?from?ordertb?where?1>0'); ????if?Trim(Edit1.Text)''?then ????SQL.Add('?and?serialid?like?''%'+Trim(Edit1.Text)+'%'''); ????if?Trim(Edit2.Text)''then ????SQL.Add('?and?pname?like?''%'+Trim(Edit2.Text)+'%'''); ????Open; ??end; end;
總結(jié):
將條件為空的字段從查詢語句中過濾掉。
? 版權(quán)聲明
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載。
THE END
喜歡就支持一下吧
相關(guān)推薦