数据库字段: 实发量 float ,单价 money 
delphi修改语句:
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Text:=' update  clxhd set   单价='#39+edit8.Text+#39', 
                              + ' 实发量=''#39+edit7.Text+#39'' '
                              +' where clb_id='#39+edit9.Text+#39'  ' ;
ADOQuery1.ExecSQL;
程序运行修改的时候出错信息:将截段字符串或二进制数据~!
主要问题就是类型转换问题:如何把字符类型转换为浮点类型或money类型?才能修改的时候不出错!

解决方案 »

  1.   

    用StrToFloat试下ADOQuery1.Close;
    ADOQuery1.SQL.Clear;
    ADOQuery1.SQL.Text:=' update  clxhd set   单价='#39+StrToFloat(edit8.Text)+#39', 
                                  + ' 实发量=''#39+edit7.Text+#39'' '
                                  +' where clb_id='#39+edit9.Text+#39'  ' ;
    ADOQuery1.ExecSQL
      

  2.   

    肯定是那个SQL语句有问题
      

  3.   


    Sorry,我搞错了。try
      edit8.Text := Trim(edit8.Text);
      StrToFloat(edit8.Text);
    except
      ShowMessage('请输入合法的单价');
    end;ADOQuery1.Close;
    ADOQuery1.SQL.Clear;
    ADOQuery1.SQL.Text:=' update  clxhd set   单价='#39+edit8.Text+#39', 
                                  + ' 实发量=''#39+edit7.Text+#39'' '
                                  +' where clb_id='#39+edit9.Text+#39'  ' ;
    ADOQuery1.ExecSQL;
      

  4.   

    我想也是,问题是该如何修改?如何写才正确那?单价=''StrToFloat(edit8.Text)'',
    这样写可以运行,但是还是提示错误,vchar不能转换为float! 
      

  5.   

    将SQL整理好来ADOQuery1.SQL.Text:=' update  clxhd set   单价='+edit8.Text 
                                  + ' , 实发量='''+edit7.Text+''''
                                  +' where clb_id='+edit9.Text;
      

  6.   

    ADOQuery1.SQL.Text:=' update  clxhd set   单价='#39+edit8.Text+#39', 
                                  + ' 实发量=''#39+edit7.Text+#39'' '
                                  +' where clb_id='#39+edit9.Text+#39'  ' ;
    这样写可以运行,但是还是提示字符类型转换错误!
      

  7.   

    将数据类型varcher转换为float时出错!!
      

  8.   

    用我上面发给你的SQL试下。ADOQuery1.SQL.Text:=' update  clxhd set   单价='+edit8.Text 
                                  + ' , 实发量='''+edit7.Text+''''
                                  +' where clb_id='+edit9.Text;
      

  9.   

    edit7\8\9 其中一个编辑框内的数据长度超过了数据库字段的长度。试试:
    ADOQuery1.SQL.Text:=' update  clxhd set   单价=:price, 实发量=:relcount where clb_id=:clbid' ;
    ADOQuery1.Parameters.ParamByName('price').Value := trim(edit7.text);
    ADOQuery1.Parameters.ParamByName('relcount').Value := trim(edit8.text);
    ADOQuery1.Parameters.ParamByName('clbid').Value := trim(edit9.text);Sql中的内容,必然是字符串,所以1楼兄弟的代码编译器不会通过。
      

  10.   

    楼上none01代码通过!问题已经解决!谢谢了!