Q&A

  • [긴급질문] 예외처리 에러....._ 도와주세요.
너무 급합니다. 도와주세요...

이 코드는 작업전 인덱스를 없애주고 작업후 다시 인덱스를 생성시켜 주는 과정을 코딩한 것입니다. 다른건 전혀 문제가 없는데... 인덱스가 없는 경우 인덱스 drop시에 에러가 나고 그때 이 과정을 넘겨 버리고 싶습니다. 그런데...

예외 처리가 되지 않는군요... 정말 너무 급합니다. 항상 질문만 해서 죄송하지만...

제발 도와 주십시오...

=========================================

With Query2 Do Begin

try

Close; SQL.Clear; SQL.Add('drop index medclmyy_idx1'); ExecSQL;

Except

showmessage('medclmyy_idx1 index 생성됨');

end;

Close;

SQL.Clear;

//SQL.Add('drop index medclmyy_idx1');

SQL.Add('delete from medclmyy');

SQL.Add('where c_jinyy = ''' + CEN.Text + ccwkDate + '''');

ExecSQL;



Close;

SQL.Clear;

SQL.Add('load table medclmyy from ''c:HospWorkbinmedclmyy.txt ''

format ''ascii'' quotes on escapes on strip off delimited by '','' ');

ExecSQL;



Close;

SQL.Clear;

SQL.Add('CREATE INDEX "medclmyy_idx1" ON "DBA"."medclmyy"("c_chunggu"

ASC,"c_sosok" ASC,"c_clmnum" ASC,"c_jinryo" ASC)');

ExecSQL;

End;

3  COMMENTS
  • Profile
    bassmania 2000.09.25 23:49
    김명찬 wrote:

    > 너무 급합니다. 도와주세요...

    > 이 코드는 작업전 인덱스를 없애주고 작업후 다시 인덱스를 생성시켜 주는 과정을 코딩한 것입니다. 다른건 전혀 문제가 없는데... 인덱스가 없는 경우 인덱스 drop시에 에러가 나고 그때 이 과정을 넘겨 버리고 싶습니다. 그런데...

    > 예외 처리가 되지 않는군요... 정말 너무 급합니다. 항상 질문만 해서 죄송하지만...

    > 제발 도와 주십시오...

    > =========================================

    > With Query2 Do Begin

    > try

    > Close; SQL.Clear; SQL.Add('drop index medclmyy_idx1'); ExecSQL;

    > Except

    > showmessage('medclmyy_idx1 index 생성됨');

    > end;

    > Close;

    > SQL.Clear;

    > //SQL.Add('drop index medclmyy_idx1');

    > SQL.Add('delete from medclmyy');

    > SQL.Add('where c_jinyy = ''' + CEN.Text + ccwkDate + '''');

    > ExecSQL;

    >

    > Close;

    > SQL.Clear;

    > SQL.Add('load table medclmyy from ''c:HospWorkbinmedclmyy.txt ''

    > format ''ascii'' quotes on escapes on strip off delimited by '','' ');

    > ExecSQL;

    >

    > Close;

    > SQL.Clear;

    > SQL.Add('CREATE INDEX "medclmyy_idx1" ON "DBA"."medclmyy"("c_chunggu"

    > ASC,"c_sosok" ASC,"c_clmnum" ASC,"c_jinryo" ASC)');

    > ExecSQL;

    > End;





    안녕하세요. 배스마니아 조덕진입니다.

    델파이 초보라서 큰 도움이 될지 모르겠지만,

    다음의 코드를 사용하시면 해결이 될 것으로 생각합니다.



    // 폼 생성 이벤트

    procedure Tform.FormCreate(Sender: TObject);

    begin

    Application.OnException := AppException;

    end;



    // 사용자 정의 함수

    procedure Tform.AppException(Sender: TObject; E: Exception);

    begin

    if pos('Key violation', E.Message) > 0 then

    ShowMessage('Key Violation Error.!')

    else if pos('Update failed', E.Message) > 0 then

    ShowMessage('Update Faied Error.!')

    else

    ShowMessage(E.Message);

    end;



    > try

    > Close; SQL.Clear; SQL.Add('drop index medclmyy_idx1'); ExecSQL;

    > Except

    > showmessage('medclmyy_idx1 index 생성됨');

    > end;

    Raise EAbort.Create('');



    제 경우엔 이렇게 해서 예외처리를 하고 있습니다.

    원하시는 답변인지 모르겠네요.

    그럼.

  • Profile
    김명찬 2000.09.26 00:44
    답변 감사합니다. 하지만 제가 뭘 잘못했는지 잘 안되네요...

    쩝....





    bassmania wrote:

    > 김명찬 wrote:

    > > 너무 급합니다. 도와주세요...

    > > 이 코드는 작업전 인덱스를 없애주고 작업후 다시 인덱스를 생성시켜 주는 과정을 코딩한 것입니다. 다른건 전혀 문제가 없는데... 인덱스가 없는 경우 인덱스 drop시에 에러가 나고 그때 이 과정을 넘겨 버리고 싶습니다. 그런데...

    > > 예외 처리가 되지 않는군요... 정말 너무 급합니다. 항상 질문만 해서 죄송하지만...

    > > 제발 도와 주십시오...

    > > =========================================

    > > With Query2 Do Begin

    > > try

    > > Close; SQL.Clear; SQL.Add('drop index medclmyy_idx1'); ExecSQL;

    > > Except

    > > showmessage('medclmyy_idx1 index 생성됨');

    > > end;

    > > Close;

    > > SQL.Clear;

    > > //SQL.Add('drop index medclmyy_idx1');

    > > SQL.Add('delete from medclmyy');

    > > SQL.Add('where c_jinyy = ''' + CEN.Text + ccwkDate + '''');

    > > ExecSQL;

    > >

    > > Close;

    > > SQL.Clear;

    > > SQL.Add('load table medclmyy from ''c:HospWorkbinmedclmyy.txt ''

    > > format ''ascii'' quotes on escapes on strip off delimited by '','' ');

    > > ExecSQL;

    > >

    > > Close;

    > > SQL.Clear;

    > > SQL.Add('CREATE INDEX "medclmyy_idx1" ON "DBA"."medclmyy"("c_chunggu"

    > > ASC,"c_sosok" ASC,"c_clmnum" ASC,"c_jinryo" ASC)');

    > > ExecSQL;

    > > End;

    >

    >

    > 안녕하세요. 배스마니아 조덕진입니다.

    > 델파이 초보라서 큰 도움이 될지 모르겠지만,

    > 다음의 코드를 사용하시면 해결이 될 것으로 생각합니다.

    >

    > // 폼 생성 이벤트

    > procedure Tform.FormCreate(Sender: TObject);

    > begin

    > Application.OnException := AppException;

    > end;

    >

    > // 사용자 정의 함수

    > procedure Tform.AppException(Sender: TObject; E: Exception);

    > begin

    > if pos('Key violation', E.Message) > 0 then

    > ShowMessage('Key Violation Error.!')

    > else if pos('Update failed', E.Message) > 0 then

    > ShowMessage('Update Faied Error.!')

    > else

    > ShowMessage(E.Message);

    > end;

    >

    > > try

    > > Close; SQL.Clear; SQL.Add('drop index medclmyy_idx1'); ExecSQL;

    > > Except

    > > showmessage('medclmyy_idx1 index 생성됨');

    > > end;

    > Raise EAbort.Create('');

    >

    > 제 경우엔 이렇게 해서 예외처리를 하고 있습니다.

    > 원하시는 답변인지 모르겠네요.

    > 그럼.

  • Profile
    bassmania 2000.09.26 00:57
    안녕하세요. 배스마니아 조덕진입니다.



    보통의 경우 try...except...end 루틴을 사용하여 예외처리를 하지만,

    델파이의 메세지를 대신하여 사용자가 원하는 형태의 메세지를 보여줄때 사용하시면

    됩니다.



    그리고, IDE 메뉴 중 Tool/Debugger Options/Language Exceptions 의 "Stop on Delphi

    Exceptions"의 체크를 해지하시기 바랍니다.



    여기까지가 초보의 한계네요. 죄송합니다.



    그럼..