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

發現一個Locate在中文下的錯誤??

尚未結案
shinhrn
中階會員


發表:54
回覆:165
積分:83
註冊:2002-06-05

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-05-04 16:05:28 IP:218.162.xxx.xxx 未訂閱
假設資料內容為    陳11到府 陳到府2 陳到府3    Locate('name','陳', [loCaseInsensitive,loPartialKey]); 時找到第一筆 陳11到府 此為正確.. 可是如果資料為 陳到府 陳到府2 陳到府3 Locate('name','陳', [loCaseInsensitive,loPartialKey]); 時找到第二筆 陳到府2 ==================================== 也就是 locate 設loPartialKey 找的部分資料如後面是 英數 locate正確找到第一筆 如後面是 中文 locate就跑到第二筆了.... 奇怪了???? 發表人 -
change.jian
版主


發表:29
回覆:620
積分:439
註冊:2003-06-02

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-05-04 16:17:44 IP:61.222.xxx.xxx 未訂閱
請問一下,你用何種方式連到資料庫,ADO嗎?查一下你的欄位型態是否為ftWideString,當欄位型態為ftWideString時,Local會有問題 給您參考一下
shinhrn
中階會員


發表:54
回覆:165
積分:83
註冊:2002-06-05

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-05-04 16:45:29 IP:218.162.xxx.xxx 未訂閱
引言: 請問一下,你用何種方式連到資料庫,ADO嗎?查一下你的欄位型態是否為ftWideString,當欄位型態為ftWideString時,Local會有問題 給您參考一下
我是用ado連accset的...Field.DataType.查的結果真的是ftWideStringㄝ.. 可是要怎麼設ㄋ??
P.D.
版主


發表:603
回覆:4038
積分:3874
註冊:2006-10-31

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-05-04 16:46:42 IP:61.71.xxx.xxx 未訂閱
引言: 假設資料內容為 陳11到府 陳到府2 陳到府3 Locate('name','陳', [loCaseInsensitive,loPartialKey]); 時找到第一筆 陳11到府 此為正確.. 可是如果資料為 陳到府 陳到府2 陳到府3 Locate('name','陳', [loCaseInsensitive,loPartialKey]); 時找到第二筆 陳到府2 ==================================== 也就是 locate 設loPartialKey 找的部分資料如後面是 英數 locate正確找到第一筆 如後面是 中文 locate就跑到第二筆了.... 奇怪了???? < face="Verdana, Arial, Helvetica"> 改成 Locate('name','陳', [loPartialKey]);
shinhrn
中階會員


發表:54
回覆:165
積分:83
註冊:2002-06-05

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-05-04 17:02:38 IP:218.162.xxx.xxx 未訂閱
引言: 改成 Locate('name','陳', [loPartialKey]);
試過不是 loCaseInsensitive 的問題
change.jian
版主


發表:29
回覆:620
積分:439
註冊:2003-06-02

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-05-04 17:54:38 IP:61.222.xxx.xxx 未訂閱
沒解.我之前也遇過這個問題.後來的解決方法,是只要碰到Local,就自己另外建一個TClientDataSet,把原來的FieldDef整個assigned過來,然後把ftWideString的欄位全部換成ftString,呼叫TClientDataSet.CreateDataSet把資料建立起來,然後把整個DataSet搬過來,才去Local...手續很麻煩,所以最後儘量用filter來做,真的不行才用local.... 希望有其他大大有解
James
高階會員


發表:10
回覆:290
積分:220
註冊:2002-07-25

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-05-04 17:58:31 IP:61.218.xxx.xxx 未訂閱
這個問題我之前是透過自己繼承 TAdoDataset 元件下來 , 然後參考 ADODB.pas 的 Source , 把 Locate & Lookup 這兩個 method 給重新 override ,這是因為 ADO 在搜尋資料的時候 ,是透過一個 LocateRecord 的 protected method 去處理 , 那個 Method 裡面利用 Filter 的方式 去找資料 ,但因為透過這樣的方式他會不區份大小寫 , 因此造成資料 搜尋的時候會有問題
shinhrn
中階會員


發表:54
回覆:165
積分:83
註冊:2002-06-05

發送簡訊給我
#8 引用回覆 回覆 發表時間:2004-05-11 14:44:05 IP:218.162.xxx.xxx 未訂閱
現在我是用filter來完成local及findnext的功能,沒有更好的方法就先結案好了
系統時間:2024-11-23 8:24:09
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!