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

請問關於兩個DBLookupComboBox如何作取值動作~

尚未結案
t0288542
中階會員


發表:216
回覆:254
積分:94
註冊:2004-10-06

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-01-25 14:21:03 IP:61.221.xxx.xxx 未訂閱
請問各位~ 目前有個需求資料如下~ 生產線別(001) 機台號碼(TMR-90/TMG-90/TMB-90) 生產線別(002) 機台號碼(TMR-150/TMG-150/TMB-150) ---------------------------------------------------------- 畫面有個兩個DBLookupComBox(分別是帶生產線別和機台號碼) 請問SQL文中首先會依據生產線別屬於001或002來帶出機台號碼~ 原本我都是在Object Inspector屬於ADOQuery中的SQL下語法~ 如果~需要經由DBLookupComBox(生產線別)點選後取得生產線別 再顯示DBLookupComBox(機台號碼)內資料~ 該如何去作呢~ 麻煩各位~ ^^
Fishman
尊榮會員


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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-01-25 14:47:44 IP:210.65.xxx.xxx 未訂閱
Hi t0288542,    1.set ListSource & KeyField for the two DBLookupComboBoxs to the same    2.DBLookupComboBox1.ListField := 生產線別    3.DBLookupComboBox2.ListField := 機台號碼    4.Add some codes for DBLookupComboBox1.OnClick
procedure TForm1.DBLookupComboBox1Click(Sender: TObject);
begin
    DBLookupComboBox2.KeyValue := TDBLookupComboBox(Sender).KeyValue;
    ShowMessage(DBLookupComboBox2.Text);
end;
---------------------------------- 小弟才疏學淺,若有謬誤尚請不吝指教 ----------------------------------
------
Fishman
t0288542
中階會員


發表:216
回覆:254
積分:94
註冊:2004-10-06

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-01-25 16:02:43 IP:61.221.xxx.xxx 未訂閱
Hi Fishman~    我試著利用你所提供方式~ 發生下圖的訊息~ 這是我貼在ADOQuery2中sql    SELECT         A.MD001,A.MD002,B.MX001,B.MX003 FROM         CMSMD A LEFT OUTER JOIN CMSMX B ON         A.MD001 = B.MX002 ORDER BY A.MD001,B.MX001    MD001 -> 生產線別 MX001 -> 機台號碼     謝謝~
Fishman
尊榮會員


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

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-01-25 17:10:22 IP:210.65.xxx.xxx 未訂閱
Hi t0288542,    Where do the error occur !? Could you provide more codes !?    in your case DBLookupComboBox1.ListField := 'MD001'; DBLookupComboBox2.ListField := 'MX001';    below is the sample for DBLookupComboBox    http://delphi.ktop.com.tw/loadfile.php?TOPICID=20095552&CC=449428 ---------------------------------- 小弟才疏學淺,若有謬誤尚請不吝指教 ----------------------------------
------
Fishman
t0288542
中階會員


發表:216
回覆:254
積分:94
註冊:2004-10-06

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-01-26 11:34:41 IP:61.221.xxx.xxx 未訂閱
Hi Fishman~    (1) 因為DBLookupComboBox1和DBLookupComboBox2的DataSource 設定為DataSource1,DataField設定為生產線別和機台號碼~ 會不會是因為這個原因造成上列錯誤訊息 (2) 另外DBLookupComboBox1和DBLookupComboBox2的 ListSoure都是設定為ListSource為DataSource2 KeyField都是設定為MD001(生產線別) DBLookupComboBox1.ListField := 'MD001'; DBLookupComboBox2.ListField := 'MX001'; 以上如此設定是沒錯~ 可是因為DataSource2的資料是多筆資料 比如資料如下 MD001 MD002 MX001 MX002 001 製造生產 TM200-B TM200-B 機 001 製造生產 TM200-G TM200-G 機 001 製造生產 TM200-R TM200-R 機 002 測試 002-1 22 002 測試 002-2 33 因為目前需求~ DBLookupComboBox1下拉後只秀001和002 DBLookupComboBox2資料內容如DBLookupComboBox1點選到001 只秀屬於001資料的部份~ DataSource2所對應的SQL SELECT A.MD001,A.MD002,ISNULL(B.MX001,'') AS MX001,ISNULL(B.MX003,'') AS MX002 FROM CMSMD A LEFT OUTER JOIN CMSMX B ON A.MD001 = B.MX002 ORDER BY A.MD001 麻煩大家~
Fishman
尊榮會員


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

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-01-26 13:16:36 IP:210.65.xxx.xxx 未訂閱
Hi t0288542,    另一個範例 for DBLookupComboBox:    http://delphi.ktop.com.tw/loadfile.php?TOPICID=20104942&CC=449638 1.建立三個 DataSet 第一個:編輯用 --> ClientDataSet1 --> DataSource1 第二個:只有生產線別 --> ClientDataSet2 --> DataSource2 第三個:有生產線別與機台代號 --> ClientDataSet3 --> DataSource3 SQL Command 大致如下
Query2 :
SELECT  DISTINCT
        A.MD001
FROM    CMSMD A
ORDER BY
        A.MD001    Query3 :
SELECT  A.MD001,
        A.MD002,
        ISNULL(B.MX001,'') AS MX001,
        ISNULL(B.MX003,'') AS MX002 
FROM    CMSMD A LEFT OUTER JOIN CMSMX B
ON      A.MD001 = B.MX002
ORDER BY
        A.MD001,
        B.MX002
DBLookupComboBox1.OnClick 改變 DataSet3 的 Filter 條件
procedure TForm1.DBLookupComboBox1Click(Sender: TObject);
begin
  ClientDataSet3.Filtered := False;
  ClientDataSet3.Filter := 'md001 = ' + Quotedstr(TDBLookupComboBox(Sender).Text);
  ClientDataSet3.Filtered := True;
  DBLookupComboBox2.KeyValue := '';
end;
試試看可否符合你的需要 ---------------------------------- 小弟才疏學淺,若有謬誤尚請不吝指教 ----------------------------------
------
Fishman
t0288542
中階會員


發表:216
回覆:254
積分:94
註冊:2004-10-06

發送簡訊給我
#7 引用回覆 回覆 發表時間:2005-01-27 10:51:03 IP:61.221.xxx.xxx 未訂閱
Hi Fishman~ 我有試著利用您所提供的方法~ 發生幾個錯誤~ 1.當編輯那個DataSource1同時指定給DBLookupComboBoxs一樣會發生錯誤如上圖的錯誤訊息~其中機台號碼似乎無法預設指定那筆資料~ 2.DBLookupComboBox1.OnClick 所改變 ADOQuery3 的 Filter 條件 所點選生產線別對應機台號碼雖然顯示出來~但是每次點選時都是第一筆資料~ 不好意思~ 我不知道我那裡設定錯誤~ 麻煩您~ 或者我是否可將檔案寄給你~看一下嗎~
Fishman
尊榮會員


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

發送簡訊給我
#8 引用回覆 回覆 發表時間:2005-01-27 11:51:56 IP:210.65.xxx.xxx 未訂閱
Hi t0288542,    將你的專案壓縮併 post 上來吧,大家都會樂意幫你的(如果方便的話,是否可以連測試資料一起)     ---------------------------------- 小弟才疏學淺,若有謬誤尚請不吝指教 ----------------------------------
------
Fishman
t0288542
中階會員


發表:216
回覆:254
積分:94
註冊:2004-10-06

發送簡訊給我
#9 引用回覆 回覆 發表時間:2005-01-27 13:18:48 IP:61.221.xxx.xxx 未訂閱
hi Fishman 不好意思~ 我已將資料放至求助區~ 麻煩您~ 謝謝~
Fishman
尊榮會員


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

發送簡訊給我
#10 引用回覆 回覆 發表時間:2005-01-27 14:50:10 IP:210.65.xxx.xxx 未訂閱
Hi t0288542,    1.將 ADOQuery2.DataSource 清空(不要設定)    2.將 DBLookupComboBox2.KeyField 設定為 'MX001'    Try Again !!     ---------------------------------- 小弟才疏學淺,若有謬誤尚請不吝指教 ----------------------------------
------
Fishman
t0288542
中階會員


發表:216
回覆:254
積分:94
註冊:2004-10-06

發送簡訊給我
#11 引用回覆 回覆 發表時間:2005-01-27 16:35:49 IP:61.221.xxx.xxx 未訂閱
Hi Fishman~ 麻煩你~ 謝謝~ 己經解決~ ^^
系統時間:2024-06-18 5:47:59
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!