안녕하세요. 배스메니아 조덕진입니다.
델파이 초보라 모르는게 많아 이렇게 도움을 청합니다.
레코드 삭제시 예외처리를 하려고 합니다.
A 테이블의 값 중 기본키는 B 테이블의 참조키로 설정되어 있는 상태입니다.
A 테이블의 값을 삭제할 경우 'KeyViolation' 오류가 발생하는데
try...exception 처리를 하여 해결은 했으나, 이와 관련한 오류메세지를
표시하고 싶습니다.
Q&A 를 찾아서 비슷한 내용을 확인하여, 일부 오류에 대해서는 작업을 했으나,
'KeyViolation'에 관한 부분은 작업을 하지 못했습니다.
이와 관련한 도움을 기다리고 있습니다.
그럼.
제가 쓰는 방법을 일단 알려 드립니다.
그런데 원하시는 답이 아닐수도 있으니 참고하세요..
Table 사용시
var
FError : PChar ;
begin
try
//필요한 문장들...
Table1.Post ;
except on E: EDBEngineError do begin
GetMem(bError , 1024) ;
DbiGetErrorString(DBIERR_KEYVIOL, FError) ;
if E.Errors[0].Message = FError then
ShowMessage('데이터가 중복 되었습니다.') ;
FreeMem( FError ) ;
end ;
end ;
TQuery 사용시
with Query1 do begin
try
//필요한 문장들...
execSQL ;
except on E: EDBEngineError do begin
if pos('Key violation', E.Errors[0].Message) > 0 then
ShowMessage('동일한 자료가 있습니다.') ;
end ;
end ;
이것 말고 코드값으로 비교하는 것도 있습니다.
그건 잘 생각이 안나서 일단 이것만 올려 드립니다.
행복하세요..
bassmania wrote:
> 안녕하세요. 배스메니아 조덕진입니다.
> 델파이 초보라 모르는게 많아 이렇게 도움을 청합니다.
>
> 레코드 삭제시 예외처리를 하려고 합니다.
>
> A 테이블의 값 중 기본키는 B 테이블의 참조키로 설정되어 있는 상태입니다.
> A 테이블의 값을 삭제할 경우 'KeyViolation' 오류가 발생하는데
> try...exception 처리를 하여 해결은 했으나, 이와 관련한 오류메세지를
> 표시하고 싶습니다.
>
> Q&A 를 찾아서 비슷한 내용을 확인하여, 일부 오류에 대해서는 작업을 했으나,
> 'KeyViolation'에 관한 부분은 작업을 하지 못했습니다.
>
> 이와 관련한 도움을 기다리고 있습니다.
>
> 그럼.