procedure TForm2.dxButton13Click(Sender: TObject);         //商品销售过程
begin
  ADoquery1.Close;
  adoquery1.SQL.clear;
  adoquery1.sql.add('select SPshuliang from SPlist where SPName=:SPName');
  adoquery1.Parameters.ParamByName('SPName').Value:=edit20.text;
  adoquery1.Open;
  adoquery1.Close;
  adoquery1.sql.clear;
  adoquery1.SQL.add('update SPshuliang set [SPshuliang - xl] where SPName from SPlist');
  ADoquery1.Parameters.ParamByName('xl').Value:=edit16.text;
  adoquery1.Parameters.ParamByName('SPName').Value:=edit20.text;
  adoquery1.execsql;
end;
很急,专家们帮我看看!

解决方案 »

  1.   

    adoquery1.SQL.add('update splist set spshuliang=spshuliang-:xl where spname=:spname');
    adoquery1.parameters.parambyname('xl').value:=edit16.text;
    adoquery1.parameters.parambyname('spname').value:=edit20.text;不知道楼主是不是这个意思,将splist表的spshuliang字段更新么??
    看的头晕..
      

  2.   

     ADoquery1.Close; 
      adoquery1.SQL.clear; 
      adoquery1.sql.add( 'select SPshuliang from SPlist where SPName=:SPName '); 
      adoquery1.Parameters.ParamByName( 'SPName ').Value:=edit20.text; 
      adoquery1.Open; 
      adoquery1.Close; 
      adoquery1.sql.clear; 
      adoquery1.SQL.add( 'update SPshuliang set [SPshuliang - xl] where SPName from SPlist ');//这个地方把xl改成:xl 
      ADoquery1.Parameters.ParamByName( 'xl ').Value:=edit16.text; 
      adoquery1.Parameters.ParamByName( 'SPName ').Value:=edit20.text; 
      adoquery1.execsql; 
      

  3.   

    update SPshuliang set [SPshuliang - xl] where SPName from SPlist
    语句语法错误。SPshuliang 从你上一条SQL看出来应该是字段。
    update语法应该是:
    UPDATE
            { 
             table_name WITH ( < table_hint_limited > [ ...n ] )
             | view_name
             | rowset_function_limited
            } 
            SET
            { column_name = { expression | DEFAULT | NULL }
            | @variable = expression
            | @variable = column = expression } [ ,...n ]    { { [ FROM { < table_source > } [ ,...n ] ]        [ WHERE
                < search_condition > ] }
            | 
            [ WHERE CURRENT OF
            { { [ GLOBAL ] cursor_name } | cursor_variable_name }
            ] } 
            [ OPTION ( < query_hint > [ ,...n ] ) ]
      

  4.   

    adoquery1.SQL.add('update SPshuliang set SPshuliang = SPshuliang - :xl where SPName = :SPName');
    我不知道这是不是楼主要的效果,因为原来那个update语句语法就错了好几个地方
      

  5.   

    更新表就是更新表字段,先看一下SQL语法再做,才能知其然而知其所以然。
      

  6.   

    楼主的SQL基本都有问题。。
    你先说你的SQL操作是要干什么再说吧。
      

  7.   

    'update SPshuliang set [SPshuliang - xl] where SPName from SPlist  
    忘了提醒你
    既然是更新,你[SPshuliang - xl]是什么意思呀
    这叫更新吗
    应该
    update SPshuliang set [SPshuliang - xl]//这儿有问题SPshuliang到底是字段还是表名,没搞清楚 where SPName//条件语句就这一个SPName吗
     from SPlist
    另外如果参数的话,前面都加个冒号
      

  8.   

    update哪来的from子句... 跟在update关键字后面的就是表名楼主还是直接告诉我们你要做什么好了.
      

  9.   

    我猜SPList是表名,SPName和SPShuiliang是字段,那么:
    adoquery1.SQL.add('update SPList set SPshuliang = SPshuliang - :xl where SPName = :SPName');
      

  10.   

    begin
      ADoquery1.Close;
      adoquery1.SQL.clear;
      adoquery1.sql.add('select SPshuliang from SPlist where SPName=:SPName');
      adoquery1.Parameters.ParamByName('SPName').Value:=edit20.text;
      adoquery1.Open;
      adoquery1.SQL.add('update SPlist set SPshuliang = SPshuliang - :xl where SPName=:SPName');
      ADoquery1.Parameters.ParamByName('xl').Value:=edit16.text;  
      adoquery1.Parameters.ParamByName('SPName').Value:=edit20.text;
      adoquery1.execsql;
    end;
      

  11.   

    SPLIST是表名,SPshuliang是要更新的字段,XL是一个参数  SPNAME是一个条件
      

  12.   

      adoquery1.sql.clear;
      adoquery1.SQL.add( 'update SPshuliang set [SPshuliang - xl] where SPName from SPlist ');
      ADoquery1.Parameters.ParamByName( 'xl ').Value:=edit16.text;
      adoquery1.Parameters.ParamByName( 'SPName ').Value:=edit20.text;
      adoquery1.execsql; 
    ------------------------------------------------------------------------------------------
    修改成:(注意执行以下语句时,对数量进行合法性校验)
      adoquery1.sql.clear;
      adoquery1.SQL.add( 'update SPlist set SPshuliang=SPshuliang-'+edit16.text+' where SPName='''+edit20.text+'''');
      adoquery1.execsql;
      

  13.   

    update SPLIST set SPshuliang=SPshuliang - :xl where SPName