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

如何讓ado的locate方法,支援中文字搜尋!

答題得分者是:Stallion
g9221712
高階會員


發表:145
回覆:344
積分:162
註冊:2006-07-06

發送簡訊給我
#1 引用回覆 回覆 發表時間:2007-05-20 03:16:04 IP:220.134.xxx.xxx 訂閱
各位前輩:
不知道要如何讓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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2007-05-20 03:34:47 IP:211.22.xxx.xxx 未訂閱
配合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 重新編輯於 2007-05-20 03:36:32, 註解 加入補述。‧
Stallion 重新編輯於 2007-05-20 03:46:24, 註解 再加入BRUCE0211版大之前的範例。‧
g9221712
高階會員


發表:145
回覆:344
積分:162
註冊:2006-07-06

發送簡訊給我
#3 引用回覆 回覆 發表時間:2007-05-20 10:17:04 IP:220.134.xxx.xxx 訂閱
前輩:

感謝您一再的回應! 我發現配合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

發送簡訊給我
#4 引用回覆 回覆 發表時間:2007-05-20 10:36:20 IP:211.22.xxx.xxx 未訂閱
既然要模糊搜尋,那麼還是配合SQL的LIKE敘述式來寫比較好,不過要將蒐集到的資料集記錄起來並且瀏覽觀看,那可能要配合BookMark來作,才可以暫存正確資料錄的位置,我很久沒用BookMark,抱歉無法提供範例,你可以用關鍵字TBookMark搜尋KTOP,我記得有不少範例,祝成功~
eaglewolf
資深會員


發表:4
回覆:268
積分:429
註冊:2006-07-06

發送簡訊給我
#5 引用回覆 回覆 發表時間:2007-05-21 10:24:02 IP:211.75.xxx.xxx 訂閱
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

發送簡訊給我
#6 引用回覆 回覆 發表時間:2007-05-24 11:41:09 IP:218.0.xxx.xxx 訂閱
Locate方法中加个选项就可实现这个功能,如下
DataSet.Locate(KeyFiled,KeyValue,[loPartialKey]);
eaglewolf
資深會員


發表:4
回覆:268
積分:429
註冊:2006-07-06

發送簡訊給我
#7 引用回覆 回覆 發表時間:2007-05-24 16:23:29 IP:211.75.xxx.xxx 訂閱
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

發送簡訊給我
#8 引用回覆 回覆 發表時間:2008-12-31 08:39:10 IP:60.244.xxx.xxx 未訂閱
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
系統時間:2024-05-07 3:51:15
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!