各位前辈:
在利用‘update’语句更新时遇到麻烦,代码如下文,其中这一行老出问题,dm.sqlx5.Parameters.ParamByName('bh').Value :=edit22.Text;当edit22.Text的值不为空时,运行正常。当edit22.Text的值为空时,错误提示‘非法的精确度值’不知为何?????谢=================================================================
dm.sqlx5.SQL.Clear;
dm.sqlx5.SQL.Add('update jsk ');
dm.sqlx5.SQL.Add('set bm=:hh, ren=:gg,yh=:yh,fs=:fs,je=:je,bh=:bh');  
dm.sqlx5.SQL.Add('where id=:hh1  ');
dm.sqlx5.Parameters.ParamByName('hh1').Value :=trim(hh);
dm.sqlx5.Parameters.ParamByName('gg').Value :=trim(c3.Text);
dm.sqlx5.Parameters.ParamByName('hh').Value :=trim(edit2.Text);
dm.sqlx5.Parameters.ParamByName('fs').Value :=trim(c2.Text);
dm.sqlx5.Parameters.ParamByName('yh').Value :=strtoint(edit20.Text);
dm.sqlx5.Parameters.ParamByName('bh').Value :=edit22.Text;            /////////////////问题所在
dm.sqlx5.Parameters.ParamByName('je').Value :=strtoint(edit23.Text);
dm.sqlx5.ExecSQL;

解决方案 »

  1.   

    jsh 表里的编号BH字段是不是设置成非空了 ?
    那你就叫BH不出现空值咯,譬如自动编号什么的
      

  2.   

    查你的编号的字段类型,如果是数字型
    可这样写:
    dm.sqlx5.Parameters.ParamByName('bh').Value :=StrToIntDef(edit22.Text,0); 
      

  3.   

    你手工往表里插个BH=0的试试看
    或者为什么不trim(edit22.Text)一下
    是数字类型的?
      

  4.   

    試試:dm.sqlx5.SQL.CLOSE;
    dm.sqlx5.SQL.Text := ' update jsk ' +
                         ' set bh=' + QuotedStr(edit22.Text) +
                         ' where id=QuotedStr(trim(hh));  
    dm.sqlx5.SQL.ExecSQL;