如:ado.sql.add('update kk set name=''uuuu'' where id=1 and oo='lll'');
    ado...;
 执行这条SQL后如何知道此记录已经更改?或没有找到此记录没有更改?

解决方案 »

  1.   

    //-------存在则修改,不存在则添加
    procedure TForm1.Button1Click(Sender: TObject);
    begin
      query1.SQL.Clear;
      query1.SQL.Add('update tt set code=''a'' where dd=''3''');
      query1.SQL.Add('if @@rowcount=0');
      query1.SQL.Add('  insert into tt values (''a'',''3'') ');
      query1.ExecSQL;
    end;
      

  2.   

    先做判断吧。
    select 1 from kk where id=1 and oo='lll'
    if ado.isempty then  //没有找到此记录,不可能更改
    else //此记录可以更改
    begin
    ado.sql.add('update kk set name=''uuuu'' where id=1 and oo='lll'');
        ado...;
    ...
    end;
      

  3.   

    在你的表中,加上一个字段,TimeStamp 类型,这个是数据库自动触发的,所以你添加时更本不用管它,而且每一次,该条记录变化,它的value 也会变化,所以你可以根据它来判断该条记录是否改变。
      

  4.   

    create trigger tr_temp on 表
    for update
    as
       begin
            select * from inserted
                      if @@rowcount>0 
                             print('已修改数据')
                      else 
                            print('未修改数据')
       end
    楼主也可用一个 boolean或 "0" 和 "1" 通过传递参数来判断
      

  5.   

    TO jinjazz(人雅的标记--落寞刺客) 
    如果找到记录就修改,没有修改就提示,什么做???
      

  6.   

    修改调试选项:tools/debuger options/,在language exceptions页
    上去掉stop on delphi Exceptions选项procedure TForm1.Button1Click(Sender: TObject);
    begin
      query1.SQL.Clear;
      query1.SQL.Add('update t1 set dz2=''c'' where dz1=4')  ;
      query1.ExecSQL;
      query1.SQL.Clear;
      query1.SQL.Add('if @@rowcount=0  RAISERROR(''没有记录更改'',16,1)');
      try
        query1.ExecSQL;
      except
        showmessage('没有记录更改');
      end;
    end;
      

  7.   

    用adoquery.rowsaffected 就可以了。