SQL語法 |
尚未結案
|
avalokita
一般會員 發表:29 回覆:35 積分:12 註冊:2003-09-02 發送簡訊給我 |
請教一個SQL的查詢問題: 若有語法如下,
Select * from Tabel
where 性別=sex and 年級=degree and 科系=Major 上面有三個變數sex,degree,和Major
其中sex={F,M},degree={1,2,3,4},major={A,B,C,D,E} 這語法可讓我們找到符合Sex=F,degree=3,major=C的資料.. 可是若我們想找到所有一年級男生的資料,不限科系的話,
則Major變數的值要如何設,才能得到我們想要的資料... 意即讓此語法,只藉由參數的設定...
而能有等同如下命令的效力...
Select * from Tabel
where 性別=sex and 年級=degree
|
cxg
中階會員 發表:116 回覆:192 積分:76 註冊:2004-02-12 發送簡訊給我 |
|
Fishman
尊榮會員 發表:120 回覆:1949 積分:2163 註冊:2006-10-28 發送簡訊給我 |
Hi avalokita,
SQL Command: Select * from Tabel where (sex = :p_sex or :p_sex is null) and (degree = :p_degree or :p_degree is null) and (Major = :p_major or :p_major is null) 程式碼: procedure TForm1.Button1Click(Sender: TObject); begin Query1.Close; Query1.ParamByName('p_sex').Value := Edit1.Text; Query1.ParamByName('p_degree').Value := Edit2.Text; Query1.ParamByName('p_major').Value := Edit3.Text; Query1.Open; end;---------------------------------- 小弟才疏學淺,若有謬誤尚請不吝指教 ----------------------------------
------
Fishman |
avalokita
一般會員 發表:29 回覆:35 積分:12 註冊:2003-09-02 發送簡訊給我 |
引言: Hi avalokita,SQL Command: Select * from Tabel where (sex = :p_sex or :p_sex is null) and (degree = :p_degree or :p_degree is null) and (Major = :p_major or :p_major is null) 程式碼: procedure TForm1.Button1Click(Sender: TObject); begin Query1.Close; Query1.ParamByName('p_sex').Value := Edit1.Text; Query1.ParamByName('p_degree').Value := Edit2.Text; Query1.ParamByName('p_major').Value := Edit3.Text; Query1.Open; end;---------------------------------- 小弟才疏學淺,若有謬誤尚請不吝指教 ---------------------------------- >>< face="Verdana, Arial, Helvetica"> 謝謝Fisherman的回覆! 可是我還是有一些疑問, 就是如何將值傳給變數,使它得到我們想要的效果呢? 如命題所示, Query1.ParamByName('p_sex').Value := Edit1.Text; Query1.ParamByName('p_degree').Value := Edit2.Text; Query1.ParamByName('p_major').Value := Edit3.Text; 我們可設為Edit1.Text:=F;Edit2.Text:=1; 那Edit3.Text:=?? 才可得到不限科系的效果呢? |
avalokita
一般會員 發表:29 回覆:35 積分:12 註冊:2003-09-02 發送簡訊給我 |
|
avalokita
一般會員 發表:29 回覆:35 積分:12 註冊:2003-09-02 發送簡訊給我 |
[quote]
[quote]
Hi avalokita,
SQL Command: Select * from Tabel where (sex = :p_sex or :p_sex is null) and (degree = :p_degree or :p_degree is null) and (Major = :p_major or :p_major is null) 程式碼: procedure TForm1.Button1Click(Sender: TObject); begin Query1.Close; Query1.ParamByName('p_sex').Value := Edit1.Text; Query1.ParamByName('p_degree').Value := Edit2.Text; Query1.ParamByName('p_major').Value :=Edit3.Text; Query1.Open; end;關於 |
chih
版主 發表:48 回覆:1186 積分:639 註冊:2002-04-02 發送簡訊給我 |
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;TRY TRY SEE |
Fishman
尊榮會員 發表:120 回覆:1949 積分:2163 註冊:2006-10-28 發送簡訊給我 |
Hi avalokita,
引言: 謝謝Fisherman的回覆! 可是我還是有一些疑問, 就是如何將值傳給變數,使它得到我們想要的效果呢? 如命題所示, Query1.ParamByName('p_sex').Value := Edit1.Text; Query1.ParamByName('p_degree').Value := Edit2.Text; Query1.ParamByName('p_major').Value := Edit3.Text; 我們可設為Edit1.Text:=F;Edit2.Text:=1; 那Edit3.Text:=?? 才可得到不限科系的效果呢?將 edit3.text 的值清空試試看 或不行則改用以下方法再試試: SQL Command: Select * from Tabel where (sex = :p_sex or :p_sex = '') and (degree = :p_degree or :p_degree = '') and (Major = :p_major or :p_major = '') 程式碼: procedure TForm1.Button1Click(Sender: TObject); begin Query1.Close; Query1.ParamByName('p_sex').AsString := Edit1.Text; Query1.ParamByName('p_degree').AsString := Edit2.Text; Query1.ParamByName('p_major').AsString := Edit3.Text; Query1.Open; end;ps:事實上,這兩種方法我用 BDE 試過都可行 ---------------------------------- 小弟才疏學淺,若有謬誤尚請不吝指教 ----------------------------------
------
Fishman |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |