Table1의 Post를 취소 하기 위해 BeforePost 함수에 Table1.Cancel을 넣으니 그래도 Post가 작동 하더군요.. -_-!
table1.state에는 Cancel 후 Browse 모드로 나오던데, 왜 Post가 계속 작동하는지와
abort를 사용하지 않고 Post를 취소할 방법이 없는 지 먼저 여쭙구요..
두번째.. 위 사항에서 Abort; 를 넣으니 간단히 취소는 되는데..
이 Abort라는 넘을 도움말에서 찾아 보니까, 프린팅시, 기타 등등 여러가지 상황에서 쓰일 수 있는 것 같던데, 테이블도 취소 시키고, 프린트 작업도 취소시키고..
여러가지 작업을 하니까 오히려 이 명령을 사용했을때 어떤 상황을 만들어 내고, 활용범위, 장단점 등 기타 자세하게 알고 싶습니다.
한번에 두가지 질문이라.. 쩝! 조금 귀찮으 시더라도 꼭좀 부탁드립니다.
제가 가진 책에는 못찾는 것인지 나오질 안더라구요..
그럼, 좋은 밤 되세요.
> Table1의 Post를 취소 하기 위해 BeforePost 함수에 Table1.Cancel을 넣으니 그래도 Post가 작동 하더군요.. -_-!
> table1.state에는 Cancel 후 Browse 모드로 나오던데, 왜 Post가 계속 작동하는지와
> abort를 사용하지 않고 Post를 취소할 방법이 없는 지 먼저 여쭙구요..
>
> 두번째.. 위 사항에서 Abort; 를 넣으니 간단히 취소는 되는데..
> 이 Abort라는 넘을 도움말에서 찾아 보니까, 프린팅시, 기타 등등 여러가지 상황에서 쓰일 수 있는 것 같던데, 테이블도 취소 시키고, 프린트 작업도 취소시키고..
> 여러가지 작업을 하니까 오히려 이 명령을 사용했을때 어떤 상황을 만들어 내고, 활용범위, 장단점 등 기타 자세하게 알고 싶습니다.
>
> 한번에 두가지 질문이라.. 쩝! 조금 귀찮으 시더라도 꼭좀 부탁드립니다.
> 제가 가진 책에는 못찾는 것인지 나오질 안더라구요..
> 그럼, 좋은 밤 되세요.
OnBeforePost 이벤트가 발생했다는 것은 이미 Post 메소드가 호출된 상태입니다.
그러니 abort 로 중단할 수 밖에 없죠.
만일 데이타상의 에러처리나 OnPost 이전의 Exception 처리가 목적이시라면
OnPostError 이벤트에서 다음과 같이 하시는게 좋을듯 싶군요.
procedure TfrmTest.Table1PostError(DataSet: TDataSet;
E: EDatabaseError; var Action: TDataAction);
begin
DataSet.Cancel;
Action := daAbort;
end;