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

ADO+ClientDataSet Locate()中文有問題?Delphi Bug嗎?

答題得分者是:change.jian
mtliang
一般會員


發表:5
回覆:7
積分:2
註冊:2003-05-29

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-12-12 15:24:24 IP:61.30.xxx.xxx 未訂閱
請問有人遇過這問題嗎?謝謝!! ADODataSet1.Locate('menu_na','使',[loPartialKey]); ADO 沒問題,可Locate ClientDataSet1.Locate('menu_na','使',[loPartialKey]); ADO ClientDataSet Locate,Locate 不到,同指令非中文則可以 例ClientDataSet1.Locate('menu_na','A',[loPartialKey]); Dbexpress ClientDataSet 也沒問題?
jieshu
版主


發表:42
回覆:894
積分:745
註冊:2002-04-15

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-12-12 16:42:53 IP:203.204.xxx.xxx 未訂閱
引言: 請問有人遇過這問題嗎?謝謝!! ADODataSet1.Locate('menu_na','使',[loPartialKey]); ADO 沒問題,可Locate ClientDataSet1.Locate('menu_na','使',[loPartialKey]); ADO+ClientDataSet Locate,Locate 不到,同指令非中文則可以 例ClientDataSet1.Locate('menu_na','A',[loPartialKey]); Dbexpress+ClientDataSet 也沒問題?
沒錯確實有這個問題,且我已試過各種方法,仍無法解決,之前在Programmer 深度論壇也有人討論過: ClientDataSet1的Params不支持中文如何解决,急!!! http://forum.vclxx.org/topic.php?TOPIC_ID=17649&FORUM_ID=40&CAT_ID=7&Topic_Title=ClientDataSet1%AA%BAParams%A4%A3%A4%E4%AB%F9%A4%A4%A4%E5%A6p%A6%F3%B8%D1%26%2320915%3B%A1A%AB%E6%A1I%A1I%A1I&Forum_Title=%A7%F5%BA%FB%C5%AA%AA%CC%B1M%B0%CF 我想我發現了 TClientDataSet 的 TWideString Field 的 bug http://forum.vclxx.org/topic.php?TOPIC_ID=11557&FORUM_ID=5&CAT_ID=2&Topic_Title=%A7%DA%B7Q%A7%DA%B5o%B2%7B%A4F+TClientDataSet+%AA%BA+TWideString+Field+%AA%BA+bug&Forum_Title=Database 請李先生跟 Borland 反應一下 TClientDataSet 的一個小 Bug http://forum.vclxx.org/topic.php?TOPIC_ID=17231&FORUM_ID=40&CAT_ID=7&Topic_Title=%BD%D0%A7%F5%A5%FD%A5%CD%B8%F2+Borland+%A4%CF%C0%B3%A4%40%A4U+TClientDataSet+%AA%BA%A4%40%AD%D3%A4p+Bug&Forum_Title=%A7%F5%BA%FB%C5%AA%AA%CC%B1M%B0%CF 糟糕找不到主要的那一個,你自己找找看吧!
人生有夢,逐夢而行。 人若為善,福雖未至,禍已遠離。 人若為惡,禍雖未至,福已遠離。 http://www.taconet.com.tw/jieshu/
------
人生有夢,逐夢而行
人若為善,福雖未至,禍已遠離
人若為惡,禍雖未至,福已遠離
http://www.taconet.com.tw/jieshu/
jieshu
版主


發表:42
回覆:894
積分:745
註冊:2002-04-15

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-12-12 17:03:09 IP:203.204.xxx.xxx 未訂閱
引言: 糟糕找不到主要的那一個,你自己找找看吧!
找收藏的E-Mail也找不到主要的那一個,不過有找到另外一個: ClientDataset.Locate無法搜尋中文資料 http://forum.vclxx.org/topic.php?TOPIC_ID=8082&FORUM_ID=5&CAT_ID=2&Topic_Title=ClientDataset%2ELocate%B5L%AAk%B7j%B4M%A4%A4%A4%E5%B8%EA%AE%C6&Forum_Title=Database
人生有夢,逐夢而行。 人若為善,福雖未至,禍已遠離。 人若為惡,禍雖未至,福已遠離。 http://www.taconet.com.tw/jieshu/
------
人生有夢,逐夢而行
人若為善,福雖未至,禍已遠離
人若為惡,禍雖未至,福已遠離
http://www.taconet.com.tw/jieshu/
leo2568
中階會員


發表:54
回覆:124
積分:70
註冊:2003-09-21

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-12-12 17:26:45 IP:61.217.xxx.xxx 未訂閱
引言: 請問有人遇過這問題嗎?謝謝!! ADO ClientDataSet Locate,Locate 不到,同指令非中文則可以
不然你先試試這樣寫: ClientDataSet1.Locate('menu_na','使',[loCaseInsensitive,loPartialKey]); ╭╧╮╭╧╮╭╧╮╭╧╮╭╮│║│║│║ ╘∞╛╘∞╛╘∞╛╘∞╛ . ﹒﹒‧∴ ☆.....
change.jian
版主


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

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-12-17 21:32:57 IP:61.229.xxx.xxx 未訂閱
小弟提供個人的解法: 因為從ado讀到TClientDataSet時,如果為字串的話,其欄位型態會為ftWideString,這個型態在TClientDataSet呼叫Locate時就是會失敗,所以我最後是將讀取到的資料,重新在另一個TClientDataSet裡Create一個DataSet.把每個ftWideString型態的欄位在FieldDefs裡重新定義為ftString的型態,CreateDataSet後,再把資料搬到新的TClientDataSet上,然後呼叫Locate就可以了. 但這個方法會耗掉些許時間,尤其是資料量大.我那時的經驗,1~2萬筆資的資料,大概會耗掉個數十秒甚至1分鐘.不過,沒辦法,真的時間久時,只好在螢幕上show個資料處理中的訊息,最少,總比重新跟資料庫抓資料來的好吧
系統時間:2024-04-20 0:39:00
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!