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

每key in一個值,database便開始過濾...

尚未結案
okeyla
一般會員


發表:51
回覆:20
積分:19
註冊:2003-06-12

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-08-17 13:53:35 IP:211.76.xxx.xxx 未訂閱
譬如說,我想尋找database當中,人名是ANDY的資料, 在人名欄位中,keyin A,便開始運作,篩選出A開頭的人名, 接著N、D、Y... 這該怎樣做到呢?
franksyon
一般會員


發表:5
回覆:10
積分:3
註冊:2003-05-30

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-08-17 14:41:14 IP:61.56.xxx.xxx 未訂閱
如果這樣的話,我想用SQL的的語法也許可以 假設你的資料庫名稱是 USER.DB 人名那個欄位是 NAME , 你的Edit->Text 目前是空值 那你在你Edit的OnKeyPress裡面寫著 Query1->Close(); Query1->SQL->Clear(); Query1->SQL->Add("select * from user.db where NAME like '" Edit1->Text "%';"); Query1->Open(); 看看可不可以,這是我的笨方法 ^^"
okeyla
一般會員


發表:51
回覆:20
積分:19
註冊:2003-06-12

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-08-17 18:36:15 IP:211.76.xxx.xxx 未訂閱
槓龜耶... 是不是哪個property沒設好呢? >_<
franksyon
一般會員


發表:5
回覆:10
積分:3
註冊:2003-05-30

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-08-17 22:40:45 IP:61.56.xxx.xxx 未訂閱
首先作個測試 建立一個表單 拉一個Database1,Query1,DataSource1,DBGrid1,Edit1 然後將Database1 的 DatabaseName 設 test AliasName 設 BCDEMOS 將Query1 的 DatabaseName 設 test 將DataSource1 的 DataSet 設 Query1 將DBGrid1 的 DataSource 設 DataSource1 然後在Edit1 的事件 OnKeyUp 加入下列語法 void __fastcall TForm1::Edit1KeyUp(TObject *Sender, WORD &Key, TShiftState Shift) { Query1->Close(); Query1->SQL->Clear(); Query1->SQL->Add("select * from employee.db where LastName like '" Edit1->Text "%' ;"); Query1->Open(); } 再來你執行此程式,在Edit1 上面打字看看.. 應該可以的...try try 看
jessechan
版主


發表:109
回覆:394
積分:254
註冊:2002-04-05

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-08-17 23:06:23 IP:61.228.xxx.xxx 未訂閱
引言: 首先作個測試 建立一個表單 拉一個Database1,Query1,DataSource1,DBGrid1,Edit1 然後將Database1 的 DatabaseName 設 test AliasName 設 BCDEMOS 將Query1 的 DatabaseName 設 test 將DataSource1 的 DataSet 設 Query1 將DBGrid1 的 DataSource 設 DataSource1 然後在Edit1 的事件 OnKeyUp 加入下列語法 void __fastcall TForm1::Edit1KeyUp(TObject *Sender, WORD &Key, TShiftState Shift) { Query1->Close(); Query1->SQL->Clear(); Query1->SQL->Add("select * from employee.db where LastName like '" Edit1->Text "%' ;"); Query1->Open(); } 再來你執行此程式,在Edit1 上面打字看看.. 應該可以的...try try 看
小弟插個花, 我想這個方法應是可行, 但是不知有沒有漂亮一點的作法, 如果要這樣做的話, loading 是不是太大了一些. (近 2 個月半月第一次發言, 快被操死了). Jesse Chan
------
Jesse Chan
franksyon
一般會員


發表:5
回覆:10
積分:3
註冊:2003-05-30

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-08-19 02:48:52 IP:61.56.xxx.xxx 未訂閱
恩...其實也還有一個方法... 就是首先,先用一個Lstbox1 把LastName的所有欄位寫過去.. 然後由ListBox1裡面的值去尋找... 也就是說用Edit1->Text的KeyPress事件... 去尋找ListBox1的資料, 再把結果顯示到ListBox2裡面... 當你決定好要用看哪個人的詳細資料時,再增加一個Button Button的事件寫著 Query1->Close(); Query1->SQL->Clear(); Query1->SQL->Add("select * from employee.db where LastName like '" Edit1->Text "%' ;"); Query1->Open(); 這樣的話,資料庫不會一直Load..也比較快一點 算半即時吧....希望能有改善的情況..
okeyla
一般會員


發表:51
回覆:20
積分:19
註冊:2003-06-12

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-08-19 23:30:53 IP:211.76.xxx.xxx 未訂閱
引言: 恩...其實也還有一個方法... 就是首先,先用一個Lstbox1 把LastName的所有欄位寫過去.. 然後由ListBox1裡面的值去尋找... 也就是說用Edit1->Text的KeyPress事件... 去尋找ListBox1的資料, 再把結果顯示到ListBox2裡面... 當你決定好要用看哪個人的詳細資料時,再增加一個Button Button的事件寫著 Query1->Close(); Query1->SQL->Clear(); Query1->SQL->Add("select * from employee.db where LastName like '" Edit1->Text "%' ;"); Query1->Open(); 這樣的話,資料庫不會一直Load..也比較快一點 算半即時吧....希望能有改善的情況..
您介紹的方法也挺不賴的,但是衍生出另一個問題... 題外的問題: "先用一個Lstbox1 把LastName的所有欄位寫過去"<--- 若此欄位有重複,該怎麼過濾掉呢???
franksyon
一般會員


發表:5
回覆:10
積分:3
註冊:2003-05-30

發送簡訊給我
#8 引用回覆 回覆 發表時間:2003-08-20 04:09:26 IP:61.56.xxx.xxx 未訂閱
嗯...問的好...這個問題我之前在學PHP的時候有學到一個東西 那個叫做IndexOf() 這個嗎..會回傳一個int的值 用法是,如果字串中,要尋找的字串如果有在這個字串中的話,會回應一個int值 這個值的意思,就是尋找的字串,在來源字串中的起始位置 例如: ListBox1的列表如下  111 222 333 444 555 666 要尋找的字串如下 String Find1="333"; 用int a=ListBox1->IndexOf(Find1); 會回傳 a=6; 如果尋找的字串不在ListBox1中的話,會回傳 -1的值 例如: String Find2="123"; int a=ListBox1->IndexOf(Find2); 會回傳 a=-1; 代表ListBox1 裡面沒有相同的資料,會傳回-1的值 所以也就是說,當你要把欄位的資料寫到ListBox1的時候, if(ListBox1->IndexOf(Find)==-1){        增加到ListBox1中     } 這樣不知懂了沒..我懶的在打語法了,希望對你有幫助喔... try try it..... 祝好運...  
franksyon
一般會員


發表:5
回覆:10
積分:3
註冊:2003-05-30

發送簡訊給我
#9 引用回覆 回覆 發表時間:2003-08-20 04:15:54 IP:61.56.xxx.xxx 未訂閱
更正一下 String Find1="333"; 用int a=ListBox1->IndexOf(Find1); 會回傳 a=6;<------寫錯了,是傳回2 ^^" 用法 int a=ListBox1->Items->IndexOf(Edit1->Text); ShowMessage(a); 試試看..
系統時間:2024-05-15 1:30:48
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!