Q&A

  • EDBEngineError 인데요... 좀 봐주세엽...
**상황 : 두개의 테이블이 있습니다.

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' 네이블에 있으므로 레코드를 삭제하거나 변경할수 없습니다."



이 메세지거든요?

좀 도와주세요...

1  COMMENTS
  • Profile
    초보의비애 2001.10.20 18:49
    태균 wrote:

    > **상황 : 두개의 테이블이 있습니다.

    > 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;