try
      data1.ADOConnection1.BeginTrans;
       ADOQueryTmp := nil;
        ADOQueryTmp := TADOQuery.Create(ADOQueryTmp);
        ADOQueryTmp.Connection := Data1.ADOConnection1;
           //修改使用标记
                    s_sql:='delete from PRINDX where id='''+id+'''';
                    ADOQueryTmp.SQL.Clear ;
                    ADOQueryTmp.SQL.Add(s_sql) ;
                    ADOQueryTmp.ExecSQL;
                       s_sql:='delete from Tck_lld where id='''+id+'''';
                    ADOQueryTmp.SQL.Clear ;
                    ADOQueryTmp.SQL.Add(s_sql) ;
                    ADOQueryTmp.ExecSQL;
     data1.ADOConnection1.CommitTrans;
    Application.MessageBox('删除成功','提示',mb_ok);
  except
    data1.ADOConnection1.RollbackTrans;
    Application.MessageBox('删除不成功','提示',mb_ok);
  end;   s_sql:='delete from Tck_lld where id='''+id+'''';
如果这里没有找到对应的id照样删除成功,如何让这个删除失发败呢,就是没有找到对应的id

解决方案 »

  1.   

    delete from Tck_lld where 1 = 2 也一样会执行成功的 除非你的表锁了
      

  2.   


    多客户端操作时,有时是锁表的吖,比如,你要删ID1,可别人在其它机上正在编辑ID1(锁了),这样就可能出现锁了
      

  3.   

    data1.ADOConnection1.BeginTrans;  这句放在try外面"  s_sql:='delete from Tck_lld where id='''+id+''''; 
    如果这里没有找到对应的id照样删除成功,如何让这个删除失发败呢,就是没有找到对应的id"这句删除成功与是否存在对应的ID没有关系,因为id='''+id+''''仅是一个删除条件.你可以在删之前查询判断有这个值再删,没有就跳出。