请教高手!关于combobox的select问题?? |
|
flysky
一般會員 ![]() ![]() 發表:9 回覆:11 積分:4 註冊:2004-03-25 發送簡訊給我 |
如果有两个combobox,一个选择系别,一个选择班级。
可以用下面的程序来实现选择系别,
procedure Tcxform.ComboBox1Change(Sender: TObject);
begin
case combobox1.Itemindex of
0:with query1 do
begin
Close;
SQL.Clear;
SQL.add('select 姓名 from 学生表 where 系别 like ''计算机'';');
open;
end;;
end; 但是如何在选定了系别之后,再选择班级就只在已经选择的系中查询并用DBGrid显示结果呢? 在年级和班级较多的情况下是要很麻烦的每次都要重新写select语句吗? 不知道该怎么实现啦!谢谢高手啦!
|
zzuyanan
一般會員 ![]() ![]() 發表:16 回覆:9 積分:10 註冊:2004-03-18 發送簡訊給我 |
|
kevin622
一般會員 ![]() ![]() 發表:0 回覆:22 積分:9 註冊:2003-10-16 發送簡訊給我 |
引言: 如果有两个combobox,一个选择系别,一个选择班级。 可以用下面的程序来实现选择系别, procedure Tcxform.ComboBox1Change(Sender: TObject); begin case combobox1.Itemindex of 0:with query1 do begin Close; SQL.Clear; SQL.add('select 姓名 from 学生表 where 系别 like ''计算机'';'); open; end;; end; 但是如何在选定了系别之后,再选择班级就只在已经选择的系中查询并用DBGrid显示结果呢? 在年级和班级较多的情况下是要很麻烦的每次都要重新写select语句吗? 不知道该怎么实现啦!谢谢高手啦!你只要把系別及班級設成傳入參數的方式就可以了。 Query1.Close; Query1.SQL.Clear; Query1.SQL.add('select 姓名 from 學生表 where 系別 like :sParam1 and 班級 = :sParam2'); Query1.ParamByName('sParam1').Value := ComboBox1.Items[COmboBox1.ItemIndex]; Query1.ParamByName('sParam2').Value := ComboBox2.Items[COmboBox2.ItemIndex]; Query2.Open; §§§ 量力而為 §§§ 當覺得力量不足時,就是該為自己充電的時候了。 |
deity
尊榮會員 ![]() ![]() ![]() ![]() ![]() ![]() 發表:90 回覆:876 積分:678 註冊:2003-05-09 發送簡訊給我 |
引言: 如果有两个combobox,一个选择系别,一个选择班级。 可以用下面的程序来实现选择系别, procedure Tcxform.ComboBox1Change(Sender: TObject); begin case combobox1.Itemindex of 0:with query1 do begin Close; SQL.Clear; SQL.add('select 姓名 from 学生表 where 系别 like ''计算机'';'); open; end;; end; 但是如何在选定了系别之后,再选择班级就只在已经选择的系中查询并用DBGrid显示结果呢? 在年级和班级较多的情况下是要很麻烦的每次都要重新写select语句吗? 不知道该怎么实现啦!谢谢高手啦!你好,因为你将查询语句写到onchange事件中,局限性比较大,只有当combobox发生改变时才会执行你那段代码,何不如采用下面这种方法, 在http://delphi.ktop.com.tw/topic.php?TOPIC_ID=47087 中,有提到过,则将会根据你当前所选的combobox的值做出判断,不管你改动哪个combobox都会根据你选择的内容而进行查询。 procedure TForm1.Button1Click(Sender: TObject); begin with Query1 do begin close; sql.Clear; sql.Add('select 姓名from 学生表'); sql.Add('where 系别 like "' combobox1.Text '"'); sql.Add('and 班级="' combobox2.Text '"');//加多一句就可以对两个combobox进行判断了 open; end; end; ——行径窄处,留一步与人行—— 發表人 - deity 於 2004/03/30 00:25:57 |
flysky
一般會員 ![]() ![]() 發表:9 回覆:11 積分:4 註冊:2004-03-25 發送簡訊給我 |
|
flysky
一般會員 ![]() ![]() 發表:9 回覆:11 積分:4 註冊:2004-03-25 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |