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

如何搜尋DBGrid上某個特定欄位的資料??

尚未結案
windshiuan
一般會員


發表:22
回覆:11
積分:6
註冊:2003-11-17

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-07-23 10:16:09 IP:218.162.xxx.xxx 未訂閱
我是用ADOConnection元件連接Access資料庫 再透過ADOTable跟DataSource將資料庫內容顯示到DBGrid上 我想請問這樣要如何對DBGrid上的某一特定欄位做搜尋(或是資料比對)的動作? 麻煩大大幫忙解惑一下...謝謝...
bigdogchina
版主


發表:238
回覆:523
積分:312
註冊:2003-04-28

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-07-24 23:50:51 IP:211.162.xxx.xxx 未訂閱
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是一個集合,它指定了查找的方式。它包括了兩個選項:loCaseInsensitiveloPartialKey。前者是對大小寫不敏感;後者是部分匹配。 小弟我更傾向於用ADOQuery來做,因爲直接利用SQL語句自由度比較大!我初通皮毛,謬誤之處,還請多多指教! ================================= <>人生在勤,不索何獲 <>業精於勤荒於嬉,行成於思毀於隨 <>臨淵羡魚不如退而結網
------
人生在勤,不索何获?
windshiuan
一般會員


發表:22
回覆:11
積分:6
註冊:2003-11-17

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-07-26 22:52:37 IP:218.162.xxx.xxx 未訂閱
引言: 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是一個集合,它指定了查找的方式。它包括了兩個選項:loCaseInsensitiveloPartialKey。前者是對大小寫不敏感;後者是部分匹配。 小弟我更傾向於用ADOQuery來做,因爲直接利用SQL語句自由度比較大!我初通皮毛,謬誤之處,還請多多指教! ------------------------------------------------------------------ 你好~~我還有點疑惑麻煩解答一下 就是假設我今天有>人生在勤,不索何獲 <>業精於勤荒於嬉,行成於思毀於隨 <>臨淵羡魚不如退而結網 < face="Verdana, Arial, Helvetica">
bigdogchina
版主


發表:238
回覆:523
積分:312
註冊:2003-04-28

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-07-27 10:16:02 IP:211.162.xxx.xxx 未訂閱
不好意思,小弟對您的要求理解的不太明白,只能閉門造車,不過還是請您先看看下面的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 ================================= 人生在勤,不索何獲 業精於勤荒於嬉,行成於思毀於隨 臨淵羡魚不如退而結網
------
人生在勤,不索何获?
系統時間:2024-11-25 6:26:27
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!