Access不能下Like嗎? |
答題得分者是:T.J.B
|
Sei
一般會員 發表:22 回覆:38 積分:17 註冊:2002-05-22 發送簡訊給我 |
請教各位前輩:
ACCESS裡是不是不可以下LIKE呢?因為我發現下了LIKE語法都查不到資料,如下 With ADOQuery1 do
begin
Close;
SQL.Clear;
SQL.Add('Select * from Notebook');
SQL.Add('Where Titile like :String1');
Parameters.ParamByName('String1').Value := '%' Edit2.Text;
end; 那個%不管我加前加後,前加後不加或前不加後加都查不出資料
不信邪進到ACCESS裡查,一樣?
那,我要下什麼語法才能模糊查詢呢?
|
T.J.B
版主 發表:29 回覆:532 積分:497 註冊:2002-08-14 發送簡訊給我 |
這樣子試試看
With ADOQuery1 do begin Close; SQL.Clear; SQL.Add('Select * from Notebook'); SQL.Add('Where Titile like % :String1'); Parameters.ParamByName('String1').Value := Edit2.Text; open; end;回首來時路 也無風雨也無晴~~@.@ 發表人 - T.J.B 於 2002/10/03 11:34:36
------
天行健 君子當自強不息~~@.@ |
Sei
一般會員 發表:22 回覆:38 積分:17 註冊:2002-05-22 發送簡訊給我 |
我照您的方法試是語法錯誤耶
With ADOQuery1 do
begin
Close;
SQL.Clear;
SQL.Add('Select * from Notebook');
SQL.Add('Where Title like :String1');
Parameters.ParamByName('String1').Value := '%' + Edit2.Text;
Open;
ShowMessage(IntToStr(ADOQuery1.RecordCount));
end;
真是抱歉,一直刪把open給刪了
我的Edit2.Text輸入copy,結果是0,真是悲慘吶,我有好幾筆title裡都有copy呢!
引言: 這樣子試試看< >< >With ADOQuery1 do begin Close; SQL.Clear; SQL.Add('Select * from Notebook'); SQL.Add('Where Titile like % :String1'); Parameters.ParamByName('String1').Value := Edit2.Text; open; end;回首來時路 也無風雨也無晴~~@.@ 發表人 - T.J.B 於 2002/10/03 11:34:36 |
T.J.B
版主 發表:29 回覆:532 積分:497 註冊:2002-08-14 發送簡訊給我 |
|
Sei
一般會員 發表:22 回覆:38 積分:17 註冊:2002-05-22 發送簡訊給我 |
感謝前輩,ok了!
只是……為什麼不能用Parameters.ParamByName('String1').Value
真是奇怪呢!
謝謝您撥空回答我的問題~謝謝
引言: 不要用Parameters.ParamByName('String1').Value 這樣一定可以With ADOQuery1 do begin Close; SQL.Clear; SQL.Add('Select * from Notebook'); SQL.Add('Where Titile like''' Edit2.Text '''%'); open; end;回首來時路 也無風雨也無晴~~@.@ |
T.J.B
版主 發表:29 回覆:532 積分:497 註冊:2002-08-14 發送簡訊給我 |
因為當你要用
Parameters.ParamByName('String1').Value 的程式時
你的sql語法一定有用到
SQL.Add('Where Titile like :String1');
如果你的like是用'='符號時此寫法絕對沒問題也就是
SQL.Add('Where Titile = :String1');
但是因為是用like 所以Sql語法一定要加'%'符號在變數:String1後面
可是如此一來 sql就不知道'%'符號到底是sql語法
還是變數名稱的一部份所以就查不到資料 所以 每次我遇到這種問題時
都改用 SQL.Add('Where Titile like''' Edit2.Text '''%');
這樣就沒問題了 回首來時路
也無風雨也無晴~~@.@ 發表人 - T.J.B 於 2002/10/03 13:58:44
------
天行健 君子當自強不息~~@.@ |
Sei
一般會員 發表:22 回覆:38 積分:17 註冊:2002-05-22 發送簡訊給我 |
原來如此,謝謝前輩的指點!
如果沒有上來post這邊,如果沒有您回文,我看我這輩子都一直在Parameters.ParamByName裡打轉,再次感謝您!
引言: 因為當你要用 Parameters.ParamByName('String1').Value 的程式時 你的sql語法一定有用到 SQL.Add('Where Titile like :String1'); 如果你的like是用'='符號時此寫法絕對沒問題也就是 SQL.Add('Where Titile = :String1'); 但是因為是用like 所以Sql語法一定要加'%'符號在變數:String1後面 可是如此一來 sql就不知道'%'符號到底是sql語法 還是變數名稱的一部份所以就查不到資料 所以 每次我遇到這種問題時 都改用 SQL.Add('Where Titile like''' Edit2.Text '''%'); 這樣就沒問題了 回首來時路 也無風雨也無晴~~@.@ 發表人 - T.J.B 於 2002/10/03 13:58:44 |
ddy
站務副站長 發表:262 回覆:2105 積分:1169 註冊:2002-07-13 發送簡訊給我 |
引言: 請教各位前輩: ACCESS裡是不是不可以下LIKE呢?因為我發現下了LIKE語法都查不到資料,如下 With ADOQuery1 do begin Close; SQL.Clear; SQL.Add('Select * from Notebook'); SQL.Add('Where Titile like :String1'); Parameters.ParamByName('String1').Value := '%' Edit2.Text; end; 那個%不管我加前加後,前加後不加或前不加後加都查不出資料 不信邪進到ACCESS裡查,一樣? 那,我要下什麼語法才能模糊查詢呢?Access 裡的SQL 語法下Like ,萬用字元是「*」,而不是「%」吧 這樣子當然是查不到的 噓~~~~~~沉思中… |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |