这个问题 比较简单,当局者迷,寻求解决。num1,num2:integer;    with DM.Outputqry do
    begin
      Close;
      SQL.Clear;
      SQL.Add('select 数量 from 库存清单 where 货号='''+stringgrid1.Cells[1,currentRow]+'''');
      Open;
      Num1:=StrToInt(DM.OutputQry.FieldByName('数量').AsString);
    end;  Num2:=StrToInt(StringGrid1.Cells[1,3]);
  Num3:=Num1-num2;
  with DM.Outputqry do
  begin
    Close;
    SQL.Clear;
    SQL.Add('update 库存清单 set 数量=num3 where 货号='''+stringgrid1.cells[1,1]+''' ');
    ExecSQL;
  end;在 库存清单 中 设置的 '数量 ' 类型 为 int。运行的时候提示 ' is not a valid integer'

解决方案 »

  1.   

    你首先看看错误在哪句话出现,这个错误很明显,你把不符合int规范的数字要转换成int肯定出错
      

  2.   

    DM.OutputQry.FieldByName('数量').AsString这个的结果是空 字符串
      

  3.   


      SQL.Add('update 库存清单 set 数量=num3 where 货号='''+stringgrid1.cells[1,1]+''' ');
      ExecSQL
    这句。
    实在想不起 为什么会错。
      

  4.   

    第二个:
    SQL.Add('update 库存清单 set 数量=num3 where 货号='''+stringgrid1.cells[1,1]+''' ');
    num3没在SQL中替换
      

  5.   


    SQL.Add('update 库存清单 set 数量 = ' + IntToStr(num3) + ' where 货号='''+stringgrid1.cells[1,1]+''' ');
      

  6.   

    断点查询到num1有数据,num2 无数据,估计问题出现在这里。
    Num2:=StrToInt(StringGrid1.Cells[1,3])
    why
      

  7.   

    我把num1,num2,num3设置为局部变量,都有数据了,但是在 显示 num3列名 无效。
      

  8.   

    Num2:=StrToIntDef(StringGrid1.Cells[1,3], 0);
      

  9.   

    num3是delphi的变量,不能直接写在sql串中的,可以这样写
    SQL.Add('update 库存清单 set 数量='+inttostr(num3)+' where 货号='''+stringgrid1.cells[1,1]+''' ');
      

  10.   

      SQL.Add('update 库存清单 set 数量='+Inttostr(num3)+' where 货号='''+stringgrid1.cells[1,1]+''' ');