**상황 : 두개의 테이블이 있습니다.
A 테이블에서 B 테이블의 컬럼 하나를 FK 로 잡고있습니다.
그래서 현재 B 테이블에서 데이타를 지울 경우 A 테이블의 FK 데이타가 사용중이면
현재 foreign key 값이 사용중이라는 메세지를 띄우고 싶습니다.
****************코드 내용*************
temp_name: String; //listbox 안의 선택된 항목을 담을 변수
i : integer;
begin
try <----------- 여기서도 try 로 싸보구...
if messagedlg ('삭제하겠습니까?',mtconfirmation,[mbok,mbcancel],0) = mrok then
begin
temp_name := listbox1.items.Strings[listbox1.itemindex];
q_friend.close;
q_friend.sql.Clear ;
q_friend.sql.add ('delete * from friend where f_name = :t_name');
q_friend.ParamByName ('t_name').value := temp_name;
try <-------------여기서도 싸봐도...
q_friend.ExecSQL;
// listbox 새로 고침
except on e:EDBEngineError do
showmessage ('이미 다른 주소록에서 그 목록을 쓰고 있어서'
+#13+'지울수가 없습니다.');
end;
listbox1.Items.Clear;
q_friend.close;
q_friend.sql.clear;
q_friend.sql.add('select * from friend order by f_num');
q_friend.open;
for i:=0 to q_friend.RecordCount-1 do
begin
listbox1.Items.Add(q_friend.Fields[1].AsString);
q_friend.Next;
end;
bitbtn2.Enabled := false;
end
else
exit;
except on EDBEngineError do
showmessage ('이미 다른 주소록에서 그 목록을 쓰고 있어서'
+#13+'지울수가 없습니다.');
end;
exception 에서 메세지를 잡질 못하네요... 에러 메세지는 분명
"Project juso.exe raised exception class EBDEngineError with message 'Key violation [Microsoft][ODBC Microsoft Access Driver] 관련 레코드가 'man' 네이블에 있으므로 레코드를 삭제하거나 변경할수 없습니다."
이 메세지거든요?
좀 도와주세요...
> **상황 : 두개의 테이블이 있습니다.
> A 테이블에서 B 테이블의 컬럼 하나를 FK 로 잡고있습니다.
>
> 그래서 현재 B 테이블에서 데이타를 지울 경우 A 테이블의 FK 데이타가 사용중이면
> 현재 foreign key 값이 사용중이라는 메세지를 띄우고 싶습니다.
>
> ****************코드 내용*************
> temp_name: String; //listbox 안의 선택된 항목을 담을 변수
> i : integer;
> begin
> try <----------- 여기서도 try 로 싸보구...
> if messagedlg ('삭제하겠습니까?',mtconfirmation,[mbok,mbcancel],0) = mrok then
> begin
> temp_name := listbox1.items.Strings[listbox1.itemindex];
> q_friend.close;
> q_friend.sql.Clear ;
> q_friend.sql.add ('delete * from friend where f_name = :t_name');
> q_friend.ParamByName ('t_name').value := temp_name;
> try <-------------여기서도 싸봐도...
> q_friend.ExecSQL;
> // listbox 새로 고침
> except on e:EDBEngineError do
> showmessage ('이미 다른 주소록에서 그 목록을 쓰고 있어서'
> +#13+'지울수가 없습니다.');
> end;
>
> listbox1.Items.Clear;
> q_friend.close;
> q_friend.sql.clear;
> q_friend.sql.add('select * from friend order by f_num');
> q_friend.open;
>
> for i:=0 to q_friend.RecordCount-1 do
> begin
> listbox1.Items.Add(q_friend.Fields[1].AsString);
> q_friend.Next;
> end;
> bitbtn2.Enabled := false;
> end
> else
> exit;
>
> except on EDBEngineError do
> showmessage ('이미 다른 주소록에서 그 목록을 쓰고 있어서'
> +#13+'지울수가 없습니다.');
> end;
>
> exception 에서 메세지를 잡질 못하네요... 에러 메세지는 분명
>
> "Project juso.exe raised exception class EBDEngineError with message 'Key violation [Microsoft][ODBC Microsoft Access Driver] 관련 레코드가 'man' 네이블에 있으므로 레코드를 삭제하거나 변경할수 없습니다."
>
> 이 메세지거든요?
> 좀 도와주세요...
raise를 추가해보세염.
except on EDBEngineError do
begin
showmessage ('이미 다른 주소록에서 그 목록을 쓰고 있어서'
+#13+'지울수가 없습니다.');
raise;
end;
end;