如何讓ado的locate方法,支援中文字搜尋! |
答題得分者是:Stallion
|
g9221712
高階會員 ![]() ![]() ![]() ![]() 發表:145 回覆:344 積分:162 註冊:2006-07-06 發送簡訊給我 |
各位前輩:
不知道要如何讓ado的locate方法,支援中文字搜尋、還有關鍵字搜尋 因為我看到在MS ACCESS中,在資料表開啟後,可以按下Ctrl F 針對資料 作模糊搜尋,就是只要輸入部份字元,就將紀錄移到接近的資料上, 我是想說用SQL的Like語法來模擬,但是不知道Recordset 是否可以用紀錄編號 來作為移動的依據,因為同時符合的紀錄可能有多筆,不知道要如何做到類似 MS ACCESS,可以部份欄位搜尋、和欄位開頭搜尋、完整符合搜尋! 而且搜尋方向、可以往上、往下,選項如大小寫必須相等,真是很棒的萬用搜尋! 懇請各位前輩給予提示,真希望能實做出這樣的功能! 感謝!
------
「人們所以覺得寂寞,是因為他們會築牆,卻不會搭橋。」 程式寫的越久,卻發現自己越來越不會寫程式! 編輯記錄
g9221712 重新編輯於 2007-05-20 03:21:06, 註解 無‧
|
Stallion
版主 ![]() ![]() ![]() ![]() ![]() ![]() 發表:52 回覆:1600 積分:1995 註冊:2004-09-15 發送簡訊給我 |
配合DataSet的Filter屬性,並結合FindFirst, FindLast, FindNext, FindPrior來作。
還有Locate我試過,在ADO的元件是有BUG的,他無法區分大小寫,不知道這項BUG有沒有修正?! p.s.這篇BRUCE0211版大的範例可以參考一下~ http://delphi.ktop.com.tw/board.php?cid=169&fid=957&tid=20316 |
g9221712
高階會員 ![]() ![]() ![]() ![]() 發表:145 回覆:344 積分:162 註冊:2006-07-06 發送簡訊給我 |
前輩:
感謝您一再的回應! 我發現配合DataSet的Filter屬性,有一個缺點就是,他會將資料作篩選的動作,也就是只會留下符合條件值的紀錄, 但在MS Access中的搜尋卻是感覺不像是執行Filter動作,因為他所有的紀錄還是會在,只是紀錄的Cursor會移動到符合紀錄的指標上! 我目前的想法是(猜想Access的作法),是否在表單上,額外放一個查詢專用的Table然後透過DataSet的Filter屬性去執行,然後移動表單上原始記錄的Cursor移動 不知道這樣的作法,是否可行! 我目前將表單上的功能針對搜尋的部份,分成搜尋和過濾(類似Access的表單過濾QBE),目前想強化的是搜尋的功能! ===================引 用 Stallion 文 章=================== 配合DataSet的Filter屬性,並結合FindFirst, FindLast, FindNext, FindPrior來作。 還有Locate我試過,在ADO的元件是有BUG的,他無法區分大小寫,不知道這項BUG有沒有修正?! p.s.這篇BRUCE0211版大的範例可以參考一下~ http://delphi.ktop.com.tw/board.php?cid=169&fid=957&tid=20316
------
「人們所以覺得寂寞,是因為他們會築牆,卻不會搭橋。」 程式寫的越久,卻發現自己越來越不會寫程式! |
Stallion
版主 ![]() ![]() ![]() ![]() ![]() ![]() 發表:52 回覆:1600 積分:1995 註冊:2004-09-15 發送簡訊給我 |
|
eaglewolf
資深會員 ![]() ![]() ![]() ![]() ![]() 發表:4 回覆:268 積分:429 註冊:2006-07-06 發送簡訊給我 |
bookmark使用方法
<textarea class="delphi" rows="10" cols="60" name="code">var TempBookmark:TBookmark; TempBookmark := Dataset1.GetBookmark; //do something here; Dataset1.GotoBookmark(TempBookmark); Dataset1.FreeBookmark(TempBookmark); </textarea> ===================引 用 Stallion 文 章=================== 既然要模糊搜尋,那麼還是配合SQL的LIKE敘述式來寫比較好,不過要將蒐集到的資料集記錄起來並且瀏覽觀看,那可能要配合BookMark來作,才可以暫存正確資料錄的位置,我很久沒用BookMark,抱歉無法提供範例,你可以用關鍵字TBookMark搜尋KTOP,我記得有不少範例,祝成功~ ![]()
------
先查HELP 再查GOOGLE 最後才發問 沒人有義務替你解答問題 在標題或文章中標明很急 並不會增加網友回答速度 Developing Tool: 1.Delphi 6 2.Visual Studio 2005 3.Visual Studio 2008 DBMS: MS-SQL
編輯記錄
eaglewolf 重新編輯於 2007-05-21 10:27:25, 註解 無‧
|
LSQ1
一般會員 ![]() ![]() 發表:0 回覆:1 積分:0 註冊:2007-05-24 發送簡訊給我 |
|
eaglewolf
資深會員 ![]() ![]() ![]() ![]() ![]() 發表:4 回覆:268 積分:429 註冊:2006-07-06 發送簡訊給我 |
Seek函數
function TCustomADODataSet.Seek(const KeyValues: Variant; SeekOption: TSeekOption = soFirstEQ): Boolean; Searches for a record using the current index. 不過有一些條件限制 請參考Help
------
先查HELP 再查GOOGLE 最後才發問 沒人有義務替你解答問題 在標題或文章中標明很急 並不會增加網友回答速度 Developing Tool: 1.Delphi 6 2.Visual Studio 2005 3.Visual Studio 2008 DBMS: MS-SQL |
redjeff
一般會員 ![]() ![]() 發表:12 回覆:16 積分:10 註冊:2006-07-06 發送簡訊給我 |
Filtered=False;不要把Filtered給"true"起來,就不會過濾條件了,
ex: Query_Main.Filtered := False; Query_Main.Filter :='name=' Quotedstr(edit1.text); Query_Main.FindNext ===================引 用 g9221712 文 章=================== 前輩: 感謝您一再的回應! 我發現配合DataSet的Filter屬性,有一個缺點就是,他會將資料作篩選的動作,也就是只會留下符合條件值的紀錄, 但在MS Access中的搜尋卻是感覺不像是執行Filter動作,因為他所有的紀錄還是會在,只是紀錄的Cursor會移動到符合紀錄的指標上! 我目前的想法是(猜想Access的作法),是否在表單上,額外放一個查詢專用的Table然後透過DataSet的Filter屬性去執行,然後移動表單上原始記錄的Cursor移動 不知道這樣的作法,是否可行! 我目前將表單上的功能針對搜尋的部份,分成搜尋和過濾(類似Access的表單過濾QBE),目前想強化的是搜尋的功能! ===================引 用 Stallion 文 章=================== 配合DataSet的Filter屬性,並結合FindFirst, FindLast, FindNext, FindPrior來作。 還有Locate我試過,在ADO的元件是有BUG的,他無法區分大小寫,不知道這項BUG有沒有修正?! p.s.這篇BRUCE0211版大的範例可以參考一下~ http://delphi.ktop.com.tw/board.php?cid=169&fid=957&tid=20316 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |