全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1030
推到 Plurk!
推到 Facebook!

經過BDE的SQL語法有點怪

答題得分者是:Fishman
Edward Chen
一般會員


發表:28
回覆:21
積分:9
註冊:2004-07-27

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-08-19 14:52:21 IP:202.39.xxx.xxx 未訂閱
Select  From Where =:Condition 然後用ParamByName來Assign這個:Condition的值結Query 最後用ExecuteSQL來送出給Oracle(9i) 程式Compile沒有錯誤,但是SQL語法沒有成功,後再用sqlmon.exe 來監看傳遞的過程,發現:Condition的地方被換成了? 所以整個語句是沒有成功的。 這個情況不知有沒有人遇到過?! 感謝這個網站
------
Signed by Edward Chen
Fishman
尊榮會員


發表:120
回覆:1949
積分:2163
註冊:2006-10-28

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-08-19 15:58:56 IP:210.65.xxx.xxx 未訂閱
Hi Edward Chen,    1.請參考 http://delphi.ktop.com.tw/topic.php?topic_id=46198 http://delphi.ktop.com.tw/topic.php?topic_id=41823 試著將程式碼改成這樣試試:
procedure TForm1.Button1Click(Sender: TObject);
var
  p_condition : String;
begin
  p_condition := '1 = 1';
  ADOQuery1.Close;
  ADOQuery1.Parameters.Clear;
  ADOQuery1.SQL.Clear;      some process for p_condition ....      ADOQuery1.SQL.Add('select * from table where '   p_condition);
  ADOQuery1.Open;
end;
2.:Condition的地方被換成了? --> 正常的 ---------------------------------- 小弟才疏學淺,若有謬誤尚請不吝指教 ----------------------------------
------
Fishman
Edward Chen
一般會員


發表:28
回覆:21
積分:9
註冊:2004-07-27

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-08-20 10:48:24 IP:202.39.xxx.xxx 未訂閱
您指教的是 ADO的部份我沒有遇到問題,都是正常的,怎麼用都不會出錯。 但是當使用BDE的Query時,不管是Select、Insert、Update或Delete時 會遇到ParamByName的參數傳不進去,但是Compile沒錯誤, SQL(Oracle 9i Oracle Client7.3)執行的結果就會沒成功 不知道是不是有環境上的問題。 另外使用Parameters時是不是一定要做.Clear來表示init呢? 感謝這個網站
------
Signed by Edward Chen
Fishman
尊榮會員


發表:120
回覆:1949
積分:2163
註冊:2006-10-28

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-08-20 12:41:43 IP:210.65.xxx.xxx 未訂閱
Hi Edward Chen,    Select 應該是 Open  Insrte 與 Update 用 ExecSQL    若是 BDE 的話,在不設定 Parameter 的狀態下,可以試試以下方法
procedure TForm1.Button2Click(Sender: TObject);
begin
  Query1.Close;
  Query1.Params.Clear;
  Query1.SQL.Clear;
  Query1.SQL.Add('select * from hr_emp_base where id like :p_id || '   Quotedstr('%')   ' or name like :p_name || '   Quotedstr('%'));
  Query1.Params[0].AsString := Edit1.Text;
  Query1.Params[1].AsString := Edit1.Text;
  Query1.Open;
end;
若還是不行,請 Post 上你的 Error Message 以方便判斷 (我猜測應該是 Query1:Parameter 'xx' not found.) ---------------------------------- 小弟才疏學淺,若有謬誤尚請不吝指教 ----------------------------------
------
Fishman
系統時間:2024-11-23 13:11:44
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!