我在中间层中采用TADOQuery控件,其中SQL语句为:
select * from TableName from TableField=:Fields
使用TDataSetProvider开放接口。
在客户端我用TClientDataSet(名字CD)接收调用:
   CD.FetchParams;
   CD.Params.ParamByName('Fields').AsString  :=Fields;
   CD.Open;
当Fields变量为英文字符时,调用成功,可是当Fields变量为带中文时,就出错,错误为
[ODBC SQL Server Driver]字符串数据,右截位。
如果改成两层结构,直接用TADOQuery控件时,中英文都没有问题。

解决方案 »

  1.   

    delphi处理中文就是不太尽人意。已经有好几个版本出现这样了,认了吧。
      

  2.   

    有人在delphibbs上说过,cds处理中文好像是有问题,不过我现在还没碰到过。
      

  3.   

    Midas处理中文确实有问题,在Filter功能:如果连接的是Access数据库,则肯定不会正确过滤,SQL Server到没有关系。我去数据的时候都是用动态SQL的,没有出现你说的问题。连SQL我用的是OLE DB接口,因为ODBC接口有很多功能不支持。
      

  4.   

    我还是习惯用英文来命名,毕竟 Delphi 不是中文版!
      

  5.   

    我到遇到过,传参数到应用程序服务器,服务器端 
    select * from table1 where name like :param1客户端
    传 %english% 就行!
    传 %中文% 到了服务器端就变成了 %中文 
    怪事!
      

  6.   

    CD.FetchParams;
       CD.Params.ParamByName('Fields').AsString  :=Fields+length(fields)个空格;//这里加上空格
       CD.Open;
    http://expert.csdn.net/Expert/topic/2109/2109363.xml?temp=.8700678