delphi2007写的,
ado+sqlserver2000+socketconnection
以前写的程序都没问题,现在遇到怪问题了。字段条码的类型为varchar(50)
with clientdataset1 do
 beign
   close;
commandtext:='';
commandtext:='update Goods set 条码=:tm'; //把这条语句改成'update Goods set 条码='''+edt_tm.text+''''时不会报错??
params.parambyname('tm').value:=edt_tm.text;
  execute; 
close; end;当edt_tm.text为空时执行以上程序时会报错:
“不允许从数据类型ntext到数据类型varchar的隐式转换....”
以前用delphi7写的三层的都出现过这样的问题(以前的写法一样)。
急!!!

解决方案 »

  1.   

    edt_tm.text是unicode的? edt_tm是不是普通的EDIT
      

  2.   

    学习一下
    是不是'update Goods set 条码=:'
    条码的值为空造成的
      

  3.   


    params.parambyname('tm').value:=edt_tm.text; 
    改成:
    params.parambyname('tm').AsString:=edt_tm.text; 
    试试
      

  4.   

    试过了,不得行,还是要报错,奇怪的是以前用delphi7写过同样的程序都没问题
      

  5.   

    这样呢?
    if Length(Trim(edt_tm.text)) = 0 then
      edt_tm.Text := ' ';
    params.parambyname('tm').value:=edt_tm.text;