关于clientDataSet一个奇怪的问题?请大家帮看看!
我在做一个midas三层结构的程序;
我在客户端先用clientDataSet.commandtext查询一个结果;
然后有如下:
if clientDataSet.locate( '项目名称 ',trim(edit1.text),[]) then showmessage( '存在 ')
else showmessage( '不存在 ');
奇怪的是如果edit1.text里是英文字符的话没有问题,可如果换成汉字即使查询结果里的一个汉字类型的值与edit1.text里的汉字相同
也是显示 '不存在 ',这是什么原因?请大家帮帮忙阿!谢谢!
[解决办法]
delphi的dataset对中文过滤存在一些问题
[解决办法]
看看这个人是怎么解决的,
因為從ado讀到TClientDataSet時,如果為字串的話,其欄位型態會為ftWideString,這個型態在TClientDataSet呼叫Locate時就是會失敗,所以我最後是將讀取到的資料,重新在另一個TClientDataSet裡Create一個DataSet.把每個 ftWideString型態的欄位在FieldDefs裡重新定義為ftString的型態,CreateDataSet後,再把資料搬到新的 TClientDataSet上,然後呼叫Locate就可以了.
但這個方法會耗掉些許時間,尤其是資料量大.我那時的經驗,1~2萬筆資的資料,大概會耗掉個數十秒甚至1分鐘.不過,沒辦法,真的時間久時,只好在螢幕上show個資料處理中的訊息,最少,總比重新跟資料庫抓資料來的好吧
[解决办法]
可能是数据库使用了unicode编码。在输入的字符串前加大写的N。具体查看帮助。