全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1433
推到 Plurk!
推到 Facebook!

TTable, TDBComboBox, TDBEdit 的關連

尚未結案
unisabilly
一般會員


發表:19
回覆:20
積分:17
註冊:2004-05-20

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-08-04 17:54:06 IP:168.209.xxx.xxx 未訂閱
各位大大好: 學校作業做不出來請各位大大幫個忙... 學校要求製作一個Paradox7 的Table (已經好了)... 然後用TTable 連上去 (可以連...) 現在就是要把那個Table裡面的primary key裡面的東西全部放到TDBComboBox裡面,然後只要選擇DBComboBox裡面的任何一個資料,DBEdit就會顯示出那個Record的其他資料,現在問題就是...怎麼做? 再說清楚一點,Table裡面含有四個Field,StudentID(Primary key),StudentName,StudentAddress,StudentTel,然後把所有的StudentID放到DBComboBox裡,只要選擇任何一個StudentID,那比Record的其他資料就可以全部顯示在DBEdit裡面. 下面試我的作法,完全失敗,而且用這種作法好像用平常的TComboBox和TEdit就好了,根本不用TDBComboBox 和TDBEdit,請幫幫忙!! procedure TfrmAddReservation.FormCreate(Sender: TObject); var temp_string : string; begin While not (frmICDL.tblStudent.Eof) do begin dlcStudentID.Items.Add(frmICDL.tblStudent.FieldByName('StudentID').asString); frmICDL.tblStudent.Next; end; end; procedure TfrmAddReservation.dlcStudentIDChange(Sender: TObject); begin frmICDL.tblStudent.First; while not frmICDL.tblStudent.Eof do begin if frmICDL.tblStudent.FieldByName('StudentID').AsString = dlcStudentID.Text then begin dbeName.Text := frmICDL.tblStudent.FieldByName('StudentName').asString; dbeAddress.Text := frmICDL.tblStudent.FieldByName('StudentAddress').asString; end; frmICDL.tblStudent.Next; end; end;
bennychen
一般會員


發表:0
回覆:7
積分:1
註冊:2003-03-17

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-08-04 19:21:37 IP:61.230.xxx.xxx 未訂閱
1. 沒錯, 應該用TComboBox就可以了, 用TDBComboBox看不出來有什麼目的. 2. 在BComboBox元件的OnStateChange事件的程式碼修改如下: tblStudent.FindKey([dlcStudentID.Text]); 請您參考...
unisabilly
一般會員


發表:19
回覆:20
積分:17
註冊:2004-05-20

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-08-04 20:01:31 IP:168.209.xxx.xxx 未訂閱
引言: 1. 沒錯, 應該用TComboBox就可以了, 用TDBComboBox看不出來有什麼目的. 2. 在BComboBox元件的OnStateChange事件的程式碼修改如下: tblStudent.FindKey([dlcStudentID.Text]); 請您參考...
不好意思,作業規定一定要用TDBComboBox TDBEdit,而用這兩個Component 的時候用FindKey他會出現Typy Violation 的錯誤,學校規定用TDBComboBox TDBEdit 應該有他的用法,例如點選TDBComboBox的某一個StudentID時,他會自動指向那個Record然後TDBEdit就可以自動把那個Record的資料讀出來,這是我自己猜想的,不曉得是不是可以這樣做,而且也不知道該如何做!! 發表人 - unisabilly 於 2004/08/04 20:17:51
P.D.
版主


發表:603
回覆:4038
積分:3874
註冊:2006-10-31

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-08-04 22:36:51 IP:61.71.xxx.xxx 未訂閱
引言: 各位大大好: 學校作業做不出來請各位大大幫個忙... 學校要求製作一個Paradox7 的Table (已經好了)... 然後用TTable 連上去 (可以連...) .... procedure TfrmAddReservation.dlcStudentIDChange(Sender: TObject); begin frmICDL.tblStudent.Locate('StudentID',dlcStudentID.Text,[]); end;
1.你可以向老師解釋, 本案中其實用dbcombobox與combobox是沒有意義的, 因為 題目是當combobox指向某一primary key時, 可以同步變更 dbedit 的內容而已 所以 combobox 足夠了! 除非 primary key 的欄位在未來是可以提供修正其內容的, 那就得用 dbcombobox了. 2.dbcombobox雖然是資料感知元件, 但選擇不同的 dbcombobox並不會令記錄指 標移動, 想要移動你那樣的做法並不實際, 還不如用locate, locate也是從頭掃 到尾, 但更顯程式的簡潔性(不過還有其他的做法)
Fishman
尊榮會員


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

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-08-05 09:01:13 IP:210.65.xxx.xxx 未訂閱
Hi unisabilly,    似乎應該使用 TDBLookupComboBox 與 TDBEdit 設定 TDBLookupComboBox 的 ListSource、KeyField 及 ListField or ListFieldIndex 即可    其中 TDBLookupComboBox.ListSource =  TDBEdit.DataSource KeyField 為你指定的 Primary Key Listfield 為顯示出來的欄位名稱 ListFieldIndex 為顯示出來的欄位 Index Listfield 與 ListFieldIndex 兩者設其一即可     ---------------------------------- 小弟才疏學淺,若有謬誤尚請不吝指教 ----------------------------------
------
Fishman
系統時間:2024-06-29 21:02:20
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!