如何搜尋DBGrid上某個特定欄位的資料?? |
尚未結案
|
windshiuan
一般會員 發表:22 回覆:11 積分:6 註冊:2003-11-17 發送簡訊給我 |
|
bigdogchina
版主 發表:238 回覆:523 積分:312 註冊:2003-04-28 發送簡訊給我 |
Hi,windshiuan,您好!
要對DBGrid上的某一特定欄位做搜尋(或是資料比對)的動作,可以考慮以下幾種ADOTable的Function: FindFirst,FindNext,FindPrior,FindLast
這4個方法是用來查找符合過濾規則的記錄的。
★ FindFirst:查找第一條符合規則的記錄
★ FindNext:查找從當前記錄開始的下一條符合規則的記錄
★ FindPrior:查找從當前記錄開始的上一條符合規則的記錄
★ FindLast:查找最後一條符合規則的記錄 Lookup
該方法用來收索符合一定條件的記錄,如果知道符合的記錄就返回指定欄位的數值。該方法有3個參數:
★ KeyFields:用來指定搜索的欄位,可以是一個或者多個欄位名,中間用分隔號隔開。
★ KeyValues:由於類型是Variant類型,可以包含任何資料類型,它指定了搜索欄位要符合的數值,如果要用來指定多個搜索欄位,那麽KeyValues參數需要用VarArrayOf函數生成Variant類型陣列
★ ResultFields:當找到符合的記錄,返回的欄位由該參數指定,同樣可以是一個或者多個欄位。留意哦,該參數也是Variant類型哦! Locate
和上面的Lookup方法類似,也是用來搜索指定條件的記錄。
不同的地方在於Locate並不返回任何數值,而只是將指標移動到符合條件的記錄上去,Lookup則不會移動指標。
Locate中的參數KeyFields參數和KeyValues參數於Lookup中的意義一樣。需要注意的是Options是一個集合,它指定了查找的方式。它包括了兩個選項:loCaseInsensitive和loPartialKey。前者是對大小寫不敏感;後者是部分匹配。 小弟我更傾向於用ADOQuery來做,因爲直接利用SQL語句自由度比較大!我初通皮毛,謬誤之處,還請多多指教! =================================
<>人生在勤,不索何獲>
<>業精於勤荒於嬉,行成於思毀於隨>
<>臨淵羡魚不如退而結網>
------
人生在勤,不索何获? |
windshiuan
一般會員 發表:22 回覆:11 積分:6 註冊:2003-11-17 發送簡訊給我 |
引言: Hi,windshiuan,您好! 要對DBGrid上的某一特定欄位做搜尋(或是資料比對)的動作,可以考慮以下幾種ADOTable的Function: FindFirst,FindNext,FindPrior,FindLast 這4個方法是用來查找符合過濾規則的記錄的。 ★ FindFirst:查找第一條符合規則的記錄 ★ FindNext:查找從當前記錄開始的下一條符合規則的記錄 ★ FindPrior:查找從當前記錄開始的上一條符合規則的記錄 ★ FindLast:查找最後一條符合規則的記錄 Lookup 該方法用來收索符合一定條件的記錄,如果知道符合的記錄就返回指定欄位的數值。該方法有3個參數: ★ KeyFields:用來指定搜索的欄位,可以是一個或者多個欄位名,中間用分隔號隔開。 ★ KeyValues:由於類型是Variant類型,可以包含任何資料類型,它指定了搜索欄位要符合的數值,如果要用來指定多個搜索欄位,那麽KeyValues參數需要用VarArrayOf函數生成Variant類型陣列 ★ ResultFields:當找到符合的記錄,返回的欄位由該參數指定,同樣可以是一個或者多個欄位。留意哦,該參數也是Variant類型哦! Locate 和上面的Lookup方法類似,也是用來搜索指定條件的記錄。 不同的地方在於Locate並不返回任何數值,而只是將指標移動到符合條件的記錄上去,Lookup則不會移動指標。 Locate中的參數KeyFields參數和KeyValues參數於Lookup中的意義一樣。需要注意的是Options是一個集合,它指定了查找的方式。它包括了兩個選項:loCaseInsensitive和loPartialKey。前者是對大小寫不敏感;後者是部分匹配。 小弟我更傾向於用ADOQuery來做,因爲直接利用SQL語句自由度比較大!我初通皮毛,謬誤之處,還請多多指教! ------------------------------------------------------------------ 你好~~我還有點疑惑麻煩解答一下 就是假設我今天有>人生在勤,不索何獲> <>業精於勤荒於嬉,行成於思毀於隨> <>臨淵羡魚不如退而結網> >>< face="Verdana, Arial, Helvetica"> |
bigdogchina
版主 發表:238 回覆:523 積分:312 註冊:2003-04-28 發送簡訊給我 |
不好意思,小弟對您的要求理解的不太明白,只能閉門造車,不過還是請您先看看下面的code:
void __fastcall TForm1::Button1Click(TObject *Sender) { TLocateOptions Opts; Opts << loPartialKey; if (ADOTable1->Locate("ID",Edit1->Text,Opts)) { ShowMessage("找到資料"); } else { ShowMessage("找不到資料"); } }這段code的用途是在Edit1中輸入條件,然後比較欄位ID中的資料,當有找到符合條件的資料時,就將資料集指標移到該筆資料上去。 小弟覺得還是用SQL語句配合ADOQuery能更方便,更靈活的解決問題,不妨再看看小弟在下面兩篇中的一些做法,或許能有所啓迪,謝謝: http://delphi.ktop.com.tw/topic.php?topic_id=49469 http://delphi.ktop.com.tw/topic.php?TOPIC_ID=49022 ================================= 人生在勤,不索何獲 業精於勤荒於嬉,行成於思毀於隨 臨淵羡魚不如退而結網
------
人生在勤,不索何获? |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |