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

Sql語法撰寫問題

尚未結案
No-where
一般會員


發表:31
回覆:53
積分:16
註冊:2002-09-05

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-07-22 08:43:41 IP:203.69.xxx.xxx 未訂閱
hi, 若介面可選擇多個查詢條件,但不一定全部查詢條件都會輸入.. 在Sql撰寫方面大家會怎麼寫? 我現在都根據不同條件,重新組合再傳入TQuery內...
carter6
初階會員


發表:53
回覆:108
積分:42
註冊:2002-12-16

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-07-22 10:33:43 IP:218.170.xxx.xxx 未訂閱
您好 您應該是困擾 Sql 後的 Where 要怎麼寫吧? 您可以用字串去將您要判斷的訊息傳入 假設: Var s : string ; begin s := 您要的判斷式 ; if Tquery.Active then Tquery.Close ; Tquery.Sql.Clear ; Tquery.Sql.Add('Select * From Tabel ') ; Tquery.Sql.Add(' Where "' s '") ; Tquery.Open ; end ; 就可以了 至於判斷式程式就要您自己去寫嘍 因為我不知道您的架構
Fishman
尊榮會員


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

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-07-22 11:05:13 IP:210.65.xxx.xxx 未訂閱
Hi No-where,    參考一下以下討論:    http://delphi.ktop.com.tw/topic.php?topic_id=52117 看看是否對你有幫助 ---------------------------------- 小弟才疏學淺,若有謬誤尚請不吝指教 ----------------------------------
------
Fishman
No-where
一般會員


發表:31
回覆:53
積分:16
註冊:2002-09-05

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-07-22 12:57:09 IP:203.69.xxx.xxx 未訂閱
hello... 現在我都是用 chih的作法 procedure TForm1.Button1Click(Sender: TObject); var SQLStr:String; begin SQLStr:='Select * from Tabel WHERE 1=1 "; If Edit1.Text<>'' then SQLStr:=SQLStr ' AND SEX =' Edit1.text; If Edit2.Text<>'' then SQLStr:=SQLStr ' AND degree =' Edit2.text; If Edit3.Text<>'' then SQLStr:=SQLStr ' AND Major =' Edit3.text; Query1.Close; Query1.SQL.Clear; Query1.SQL.Add(SQLStr); Query1.Open; end; 不過這樣的方式就不能將Sql語法寫在TQuery內... 程式碼就會變的很長...
carter6
初階會員


發表:53
回覆:108
積分:42
註冊:2002-12-16

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-07-22 13:17:04 IP:218.170.xxx.xxx 未訂閱
procedure TForm1.Button1Click(Sender: TObject); var SQLStr:String; begin SQLStr:= '' ; If Edit1.Text<>'' then SQLStr:=SQLStr ' AND SEX =' Edit1.text; If Edit2.Text<>'' then SQLStr:=SQLStr ' AND degree =' Edit2.text; If Edit3.Text<>'' then SQLStr:=SQLStr ' AND Major =' Edit3.text; Query1.Close; Query1.SQL.Clear; Query1.SQL.Add('Select * from Tabel '); Query1.SQL.Add(' WHERE 1=1 ' SQLStr); Query1.Open; end; 這樣應該可以吧!!
asou982002
一般會員


發表:14
回覆:15
積分:5
註冊:2003-06-22

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-07-29 01:01:39 IP:218.168.xxx.xxx 未訂閱
你可以加上CheckBox,把要的條件設true 然後才可把值填進Tedit中,這樣程式會比較完整,使用上才不會出現bug
No-where
一般會員


發表:31
回覆:53
積分:16
註冊:2002-09-05

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-07-29 08:44:09 IP:203.69.xxx.xxx 未訂閱
hi, 我原本是想把Sql command都寫在TQuery中... 這樣程式碼不至於太長 但是多條件式篩選 實在不知道怎麼寫在TQuery中共用... 謝謝各位的解答
ko
資深會員


發表:28
回覆:785
積分:444
註冊:2002-08-14

發送簡訊給我
#8 引用回覆 回覆 發表時間:2004-07-29 18:26:57 IP:61.221.xxx.xxx 未訂閱
No-where 你好: 我想了一個方式,你參考一下 1.先將每個元件名稱改為對應的資料庫欄位 2.參照下  
引言: with SQLTMP do begin close; SQL.Clear; SQL.Add('select * from new where') ; for i:=0 to Form1.ControlCount-1 do if Form1.Controls[i] is tEdit then if Trim(tEdit(Form1.controls[i]).Text) <>'' then SQL.Add(tEdit(Form1.controls[i]).Name '=' tEdit(Form1.controls[i]).Text ' and'); SQL.savetofile('c:\SQL.txt'); open; end;
3.上面的code所產生sql語法在最後會多一個 'and ' 所以要注意 我把sql語法編寫後的結果存在c:\sql.txt 方便除錯 4.Form1.controls[i] 是指元件的建立是在Form1上面(就是父系的意思)
------
======================
昏睡~
不昏睡~
不由昏睡~
系統時間:2024-05-13 16:31:42
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!