我在做一个midas三层结构的程序;
我在客户端先用clientDataSet.commandtext查询一个结果;
然后有如下:
if clientDataSet.locate('项目名称',trim(edit1.text),[]) then showmessage('存在')
else showmessage('不存在');
奇怪的是如果edit1.text里是英文字符的话没有问题,可如果换成汉字即使查询结果里的一个汉字类型的值与edit1.text里的汉字相同
也是显示'不存在',这是什么原因?请大家帮帮忙阿!谢谢!

解决方案 »

  1.   

    delphi的dataset对中文过滤存在一些问题
      

  2.   

    to  hongqi162(失踪的月亮) 
    请问如何解决?
      

  3.   

    看看这个人是怎么解决的,因為從ado讀到TClientDataSet時,如果為字串的話,其欄位型態會為ftWideString,這個型態在TClientDataSet呼叫Locate時就是會失敗,所以我最後是將讀取到的資料,重新在另一個TClientDataSet裡Create一個DataSet.把每個 ftWideString型態的欄位在FieldDefs裡重新定義為ftString的型態,CreateDataSet後,再把資料搬到新的 TClientDataSet上,然後呼叫Locate就可以了.
    但這個方法會耗掉些許時間,尤其是資料量大.我那時的經驗,1~2萬筆資的資料,大概會耗掉個數十秒甚至1分鐘.不過,沒辦法,真的時間久時,只好在螢幕上show個資料處理中的訊息,最少,總比重新跟資料庫抓資料來的好吧
      

  4.   

    可能是数据库使用了unicode编码。在输入的字符串前加大写的N。具体查看帮助。