var 
a:string;
begin
a:=combobox.text;
query.close;
query.sql.clear;
query.sql.add('update table');
query.sql.add('set col2='+内容);
query.sql.add('where col1='a);
query.execsql;这段代码有什么问题?它可以插入数字,大于38位时报“最大精度为38位”错误,为英文和中文报“输入列XXX无效”错误。数据库为sqlserver2000,表中字段用varchar做数据类型。如何处理?急!!!

解决方案 »

  1.   

    就是说当输入数字时,它可以插入到表中,但当数字位数大于38位时报上面所说的错而不能插入,当输入英文(如:asdf)或是中文时就报‘输入”asdf“列无效’错误。
      

  2.   

    修改如下:var 
    a:string;
    begin
    a:=combobox.text;
    if Length(内容)>38 then exit;     //判断字符长度
    query.close;
    query.sql.clear;
    query.sql.add('update table');
    query.sql.add('set col2='''+内容+'''');       //varchar字符类型需加上''
    query.sql.add('where col1='a);
    query.execsql;
      

  3.   

    数据库里varchar字段的长度不够
      

  4.   

    To:ljcwxc 但是要插入多行文本,如用memo做输入面板。我试过可以插入最后一行。
    to:wgyking 数据库中varchar的长度我1000。
      

  5.   

    你这个 col2 是浮点类型吧?
    他的表示范围只有10的38次方。你把它变成double
      

  6.   

    不是浮点类型,就是varchar类型