with AdoQuery2 do
   begin
   AdoQuery2.Close;
   AdoQuery2.SQL.Clear;
   AdoQuery2.SQL.Add('select * from 库存表kcb where kc_spid=:A');
   AdoQuery2.Parameters.ParamByName('A').Value:=Edit5.Text;
   AdoQuery2.Open;
   b:=AdoQuery2.RecordCount=0;
   if b then
    begin
    AdoQuery2.Close;
    AdoQuery2.SQL.Clear;
    AdoQuery2.SQL.Add('update 库存表kcb set kc_rksl=kc_rksl+:a,kc_tjrq=:b,kc_kcts=kc_kcts+:c where kc_spid=:B');
    AdoQuery2.Parameters.ParamByName('B').Value:=Edit5.Text;
    AdoQuery2.Parameters.ParamByName('a').Value:=Trim(Edit9.Text);
    AdoQuery2.Parameters.ParamByName('b').Value:=Trim(Edit10.Text);
    AdoQuery2.Parameters.ParamByName('c').Value:=Trim(Edit9.Text);
    AdoQuery2.ExecSQL;
    end;
    end;
问题出在无法更新表中的数据,当把where 语句去了以后就把整个表的所有内容更新了,请教高手!!!!!!!!!

解决方案 »

  1.   

    AdoQuery2.SQL.Add('select * from 库存表kcb where kc_spid=:A');
       AdoQuery2.Parameters.ParamByName('A').Value:=Edit5.Text;
    这两句的位子调换,把AdoQuery2.Parameters.句放在AdoQuery2.SQL.Add前面
      

  2.   

    把 where kc_spid=:B 中的:B 改成:D 试试,
    还有就是你的Edit5.text中库中有没有对应的值?
      

  3.   

    *************************
     b:=AdoQuery2.RecordCount=0;
       if b then
        begin
    ***********************
    这个条件请楼主说明!!!
      

  4.   

    delphi中是忽略大小写的,你的:B参数和:b参数被默认为同一个了!
      

  5.   

    sql是不区分大小写的,:b和:B会被认为是同一个参数,整个语句就是无效的了。
    把:b和:B中的一个改名就可以了。
      

  6.   

    b:=AdoQuery2.RecordCount=0;
       if b then
        begin
    =====================================if IsEmpty then
    begin
      

  7.   

    晕...来晚了.
    简单问题..
    Delphi不区分大小写滴..
    你的'B'和'b' 在Delphi看来就是同一变量...