我用commandtext设置UPDATE语句并用到SQL参数时,当字段值有中文时会被截掉部分,
如:'系统' 存到库中变成了 '系'
'系统工程'     =>       '系统'

解决方案 »

  1.   

    是不是数据库中字段设得太短了,一般是这样子的,如字段长度为CHAR(2),当然只能存成两个字了,还有调用存储过程时传递的参数长度也只有CHAR(2)之类的.
      

  2.   

    Sql Server的char好象自动补空格的,可能是你这方面出了问题!
    更新是最好都用下Trim()
      

  3.   

    字段长度是足够的(Sql Server):varchar(50)
      

  4.   

    老兄:这个问题我前几天刚遇到,这是BDE的bug,我是这样解决的,'系统工程'  +'系统工程'   =>'系统工程',你可以参考一下。两个字符串加起来,delphi他取一半。
      

  5.   

    to:hnmlb(Raul) 
       这不是BDE的问题,TClientDataSet根本就没有用到BDE.而且你那种解决方法不好,如果汉字和英文、数字混杂时,还好用吗?To:ultima_thule (ultima_thule) 
       解决方法:不用参数,例:update table1 set field1='''+'系统工程'(或变量)+''''
    注意:TClientDataSet在所有用到参数,并且可能存在汉字时,都不要用参数,而是直接在SQL语句中解决。
      

  6.   

    确实是一个Bug,应该是要修改VCL里面的一个文件,具体不记得了,你上google找找吧
      

  7.   

    会不会是内部widestring的转化问题!
      

  8.   

    这是delphi的一个bug,请修改 adodb.pas 
    1227行    Result := Length(PWideString(@TVarData(Value).VOleStr)^);将PWideString改成PAnsiString,重新编译就可以了(或者将改动后的文件拷贝到工程目录下)