Q&A

  • 레코드 삭제 취소는 어떻게 하나요?
디비그리드에 있는 레코드를 삭제 하려다가 취소하면 그상태그대로 두고

삭제모드만 빠져나와야하는데 빠져나오긴하는데 삭제를 해버려서요...


procedure TLakeF.TmBeforeDelete(DataSet: TDataSet);
begin
..........
if MessageDlg('서버에 Up Load된 "' + fname + '"파일도 삭제하여야 합니다.' + #13#10+
                '삭제할까요?',mtConfirmation,[mbYes,mbNo],0) = mrNo then
begin
   Tm.Cancel;   -> 이렇게 하면 안되나요?
   Exit;
end;
........
end;

파일은 그대도 있는데 문서정보(현재 작업테이블)를 삭제해버려요..

어떻게 해야 하는지 방법좀 알려주세요...........
1  COMMENTS
  • Profile
    버섯 2002.09.18 22:35
    트랜잭션 관리를 해야 합니다..

    sqltxt := 'delete from ....';
    query1.sql.clear;
    query1.sql.add(sqltxt);
    query1.execsql;

    이렇게 하시면 안되구요..

    query1.cachedupdates := true;
    상태에서
    Tupdatesql을 통하여 query1.delete;하신다음에

    query1.applyupdates; //삭제된것 적용
    query1.cancelupdates; //삭제된것 취소

    이런식으로 해야됩니다. 물론 일괄 적용할때 에러가 나거나 문제가 발생하면

    DB.STARTTRANSACTION;

    DB.COMMIT;
    DB.ROLLBACK;
    등을 사용해서 관리해야하구요..

    데이터베이스에 관련된 책자를 참조해서 해보십시오.