線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1256
推到 Plurk!
推到 Facebook!

请教高手!关于combobox的select问题??

 
flysky
一般會員


發表:9
回覆:11
積分:4
註冊:2004-03-25

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-03-26 17:15:20 IP:210.87.xxx.xxx 未訂閱
如果有两个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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-03-28 17:57:26 IP:219.156.xxx.xxx 未訂閱
你在combobox的onchange事件中写代码,每次在系别中选择一个以后,就把这个值提取出来,并开始检索与这个系对应的班级,然后把这些班级放到另外一个combobox中不就行了吗?
kevin622
一般會員


發表:0
回覆:22
積分:9
註冊:2003-10-16

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-03-29 20:40:12 IP:210.64.xxx.xxx 未訂閱
引言: 如果有两个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

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-03-30 00:15:32 IP:219.129.xxx.xxx 未訂閱
引言: 如果有两个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

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-03-30 08:17:43 IP:210.87.xxx.xxx 未訂閱
谢谢各位啦。尤其是楼上的。 但是问题有些变化。如果两个combobox 是要分别选择某个字段的不同部分呢? 比如 家庭住址 :“02-02-101”二楼一单元101房间。 现在要分别选择楼号和单元号,用上面的方法能实现吗?
flysky
一般會員


發表:9
回覆:11
積分:4
註冊:2004-03-25

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-03-30 08:59:06 IP:210.87.xxx.xxx 未訂閱
我已经用这样的方法解决了。谢谢deity! with query1 do         begin            Close;            SQL.Clear;            SQL.add('select *');            SQL.add('where 职工表.lh = 水电费表.lh ');            SQL.add('and 职工表.lh like ''J'+combobox1.Text+'-'+combobox2.Text+'%''');            open;         end    再想问一个问题:想要用edit敲回车键实现比如查找某编号对应的所有属性的方法。
系統時間:2024-09-11 21:26:54
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!