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

請教如何用combox取值

答題得分者是:cashxin2002
chamstar
一般會員


發表:24
回覆:36
積分:12
註冊:2004-10-16

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-10-23 11:49:09 IP:219.130.xxx.xxx 未訂閱
我有一庫data1,內有兩個字段,A1,A2,我在FORM中增加DBCOMBOX1和DBEDIT1,我用combox1選A1的值為QP01 ,這時我想自動在DBEDIT1中顯示A2的值,請教各位前輩我如何去寫語句?請幫忙,謝謝!(注:我用DBCOMBOX1取我想要的值后,DBEDIT1能自動出來a2相對應的值) A1 A2 QP01 值1 qp02 值2
wameng
版主


發表:31
回覆:1336
積分:1188
註冊:2004-09-16

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-10-23 14:07:55 IP:61.222.xxx.xxx 未訂閱
可以在 DBCOMBOX1.ONCHANGE 事件中處理
chamstar
一般會員


發表:24
回覆:36
積分:12
註冊:2004-10-16

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-10-23 15:12:56 IP:219.130.xxx.xxx 未訂閱
我是個剛學deiphi的生手,能否請告訴我具体的寫法,謝謝!
chamstar
一般會員


發表:24
回覆:36
積分:12
註冊:2004-10-16

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-10-23 15:24:23 IP:219.130.xxx.xxx 未訂閱
不好意思,是我沒講清楚,我有一職位庫zw,內有兩個字段 zw_no,zw_name,我另有一員工庫YG,內有工號gh,姓名xm,職位代號zw_no,職位名稱zw_name,我在form中用DBCOMBOX1對應員工庫中的zw_no,DBEDIT1對應員工庫中的zw_name我想在選職位代號時,dbedit1能自動顯示職位庫中對應的zw_name. procedure TForm1.DBComboBox1DropDown(Sender: TObject); var bx:string; begin with ADOQuery1 do begin Close; Sql.Clear; Sql.Add('Select Distinct zw_no,zw_name from ZW'); Open; if IsEmpty then exit; DBComboBox1.Items.Clear; while not eof do begin bx:=ADOQuery1.FieldByName('zw_no').AsString; DBComboBox1.items.add(bx); Next; end; end; 可我不知道如何在onchange中寫代碼才能DBEDIT1自動顯示相應值
cashxin2002
版主


發表:231
回覆:2555
積分:1937
註冊:2003-03-28

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-10-23 16:03:37 IP:202.62.xxx.xxx 未訂閱
您好﹗    再加入一個ADOQuery元件﹐Name屬性為ADOQuery2﹐連接職位庫﹒ 在DBComboBox1元件的OnChange事件中﹕
方法一﹐使用Locate功能﹕
begin
  ADOQuery2.Close;
  ADOQuery2.SQL.Clear;
  ADOQuery2.SQL.Add('Select * From zw');
  ADOQuery2.Locate('zw_no', DBComboBox1.Text, [loCaseInsensitive]);
  DBEdit1.Text := ADOQuery2.Fields.Fields[1].AsString;
end;    方法二﹐使用SQL語法﹕
begin
  ADOQuery2.Close;
  ADOQuery2.SQL.Clear;
  ADOQuery2.SQL.Add('Select * From zw ');
  ADOQuery2.SQL.Add('Where zw_no = ''' DBComboBox1.Text '''');
  ADOQuery2.Open;
  DBEdit1.Text := ADOQuery2.Fields.Fields[1].AsString;
end;
注﹕就您的要求而言﹐記得要將DBComboBox元件的Style屬性值設為﹕csDropDownList﹐即不允許使用者在DBComboBox元件中做KeyIn﹐另外DBEdit元件的ReadOnly屬性也需要設定True﹐因為此欄位值是經DBComboBox值的變化而得取的﹐故也不能讓使用者做KeyIn的動作﹒ 另外﹐建議您將DBComboBox元件抓取職位庫中zw_no欄位值的相關程式寫在連接職位庫之資料集元件的AfterPost和AfterDelete事件中﹐因為將程式寫在DBComboBox元件的OnDropDown事件中﹐在每次對DBComboBox元件做選擇的時候﹐皆會触發此事件﹐效率方法大打折扣﹐倒不如在職位庫發生異動(Post或Delete時)時即時的將其資料值寫入到DBComboBox中﹒ ========================= 大病初愈﹐休養調整中... ========================= 發表人 - cashxin2002 於 2004/10/23 16:13:43
------
忻晟
系統時間:2024-11-24 17:56:06
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!