strtoint(adoquery1.FieldByName('库存数量').AsString):= strtoint(adoquery1.FieldByName('库存数量').AsString ) + strtoint(edit1.text); 
想知道的是,我都在前面加了数据类型转换了,太长太难看太没可读性了,能不能不加而用更"好看"一点的方法?

解决方案 »

  1.   

    adoquery1.FieldByName('库存数量').asInteger:= adoquery1.FieldByName('库存数量').asInteger + strtoint(edit1.text);  
      

  2.   

    with adoquery1 do
    begin
    ...
        FieldByName('库存数量').asInteger:= FieldByName('库存数量').asInteger + strtointedit1.text);  
    ...
    end
      

  3.   

    混点分,直接写到SQL语句里这样简单多了
    sql.Text := '... 库存数量 = 库存数量' + edit1.text + '...';
      

  4.   

    少了一个‘+’
    sql.Text := '... 库存数量 = 库存数量 + ' + edit1.text + '...';
      

  5.   

    呵呵,代码确实不能运行,那时我有事要出去,代码来没来得及调试,但我知道代码有问题,(我是VB转到delphi的新手),我一时又不知道哪里有问题,就上来问一下,主要是想知道 .asstring 和 .asinterget,谢谢大家!
      

  6.   

    同:dll0629的解答
    不过最好用Format函数生成SQL语句
      

  7.   

    adoquery1.FieldByName('库存数量').values:=strtoint(adoquery1.FieldByName('库存数量').AsString)+xxx?这样不能运行?实在不行 赋值钱 var
      i:integer;
       i:=adoquery1.FieldByName('库存数量').asinteger;
      

  8.   

    "strtoint(adoquery1.FieldByName('库存数量').AsString):= strtoint(adoquery1.FieldByName('库存数量').AsString ) + strtoint(edit1.text);  "with adoquery1 do
    begin
      close;
      sql.text := ' update 表 set 库存数量=库存数量+:kcsl where id=:id';
      parameters.parambyname('kcsl').value := strtoint(edit1.text);
      parameters.parambyname('id').value := 条件;
      execsql;
    end;
      

  9.   

    他们都说得清楚了,但值注意的是一定要控制好edit.text只能输入的是数值,不能有字符或其它等...
      

  10.   

    直接用sql 脚本不行吗?var sqlstr:string;
    sqlstr:='update tbl_XXX   set StoreCount=StoreCount+:StoreCount   where StoreID=:StoreID';
    with adoquery do
    begin
    close;
    sql.clear;
    sql.add(sqlstr);
    parambyname('StoreCount').value:=strtoint(edit1.text);--可以增加,也可以减少库存.........
    end;
      

  11.   

    一樓的不能運行嗎?不太可能吧.除非你在edit1里輸入了非數字型的符號.