Q&A

  • 데이타베이스 오류체크하기

ADO로 인터베이스에 연결하여 사용하고 있읍니다.
그런데 인서트할때 프라이머리키 중복오류가 나면
try except 구문에서
어떻게 ado오류번호를 판단할 수가 있나요?

try
  쿼리실행

except

  * <- 이부분에서 오류가 나면 잡히기는 하는데....
  * <- 발생한 오류가 어떤오류인지 어떻게 판단하죠(오류번호라든지 그런게 있나요?)

end;

예를 들어서 아래와 같이 코딩은 할수가 없는건지요...?
---------------------------------
case err.number of
  1001 : showmessage('데이타가 중복입니다.');
  2001 : showmessage('데이타베이스가 연결되지 않았읍니다');
end;
---------------------------------

아시는 고수분 계시면 부탁드립니다.
에러잡지 못해 밤샘하는 초짜입니다.ㅜㅜ;
2  COMMENTS
  • Profile
    구창민 2002.12.27 23:29
    안녕하세요~ 구창민입니다.

    아래 코드처럼,

      try
        ...
      except
        on E: Exception do
        begin
          ShowMessage(E.Message);
        end;
      end;

    하시면 오류 메세지를 보실수 있겠지여..

    그럼~ 항상 즐건 프로그래밍 하세여~~


  • Profile
    초보짱.. 2002.12.28 02:37
    ---------------------
    님 감사합니다....^^
    그런데 그렇게 해보니 에러메세지스트링은 받을수 있는데
    메세지 스트링이 아니라 오류번호로 받을수는 없나요?

    만약 인서트할때 프라이머리키 중복오류가 나면
    입력데이타가 중복된 것이니 다시한번 확인하라는
    메세지를 띄우려는데 지금 발생한 오류가 중복에러인지..
    아니면 시스템에러인지 알 방법이 없네요...ㅜㅜ;
    코딩하는 우리야 걍 메세지보면 알지만 사용자는
    violation of Primary어쩌구저쩌구하면 뭔소린지 모를것 같아서요...

    베이직을 할때는 그런오류번호가 리턴값에 받을수 있어서  편했던거 같은데..
    델파이에서는 어떻게 해야할지 감을 잡을수가 없네요...
    이왕 손보신거 조금만 더 도와주세요.. ^^ 부탁드립니다.
    • 박성훈
      2003.01.16 22:12
      정확히는 모르지만요. 권한설정이 바뀌었거나 tcp/ip쪽에 이상이 생겼을 수 있습니다. mysql지우고 새...
    • 델사랑
    • 2002.12.28 07:40
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 구창민
      2002.12.28 23:49
      안녕하세요~ 구창민입니다. 제가 예전에 사용한 소규모 MDB 를 압축하고 복구했던 방법입니다. 참고...
    • 권민호
      2002.12.28 13:13
      ------------------------- ZipMaster라는 콤포넌트를 이용하면 됩니다.(자료실에 있지 않나?) 하지만 한...
    • 전덕성
    • 2002.12.28 05:59
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 박성훈
      2003.01.16 22:14
      혹시 쿼리와 DBGrid붙여놓고 쿼리한 값으로 직접 입력을 하시나요? 그렇다면 쿼리컴포넌트의 RequestLiv...
    • 소울해커
      2002.12.28 08:53
      uses Buttons; ... private SpeedBtn: TSpeedButton; ... procedure TForm1.FormCreate(Se...
    • 최용일
      2002.12.28 22:31
      안녕하세요. 최용일입니다. DBGrid와 연결된 Query컴포넌트에서 필드추가하시고 그 필드의 OnSetText이...
    • 윤승환
      2002.12.28 08:33
      제생각에는 방법이 없는듯 한데요. 디비그리드는 쿼리 자체를 받는것이기 때문에 디비그리드 자체에서 ...
    • 윤승환
      2002.12.28 08:29
      이렇게 하심이 어떨까요...   str := StringGrid1.Cells[0,1];   i := pos('(주...
    • 소울해커
      2002.12.28 08:19
      TBV_SANGHO := StringReplace(SG_Gird.Cells[2,I],'(주)','',rfReplaceAll]);             ...
    • 김수경
      2002.12.28 19:30
      메모 내용을 보관한 *.dbt File이 없어서 열어 볼 수가 없습니다. 첨부해 주세요
    • 남충희
      2002.12.31 04:19
      var   wSt : WideString; begin   wSt := Edit1.Text;    &nb...
    • 권민호
      2002.12.28 13:24
      -------------------------------------------- 글쎄요 저같으면 대충 아래와 같이 해보겠습니다. var i,...
    • 도니
    • 2002.12.27 21:47
    • 8 COMMENTS
    • /
    • 0 LIKES
    • 임형호
      2002.12.28 00:45
      혹시 예전의 질답게시판을 찾아보셨는지요? 위에 보면 초보자들이 처음시작을 하는데 필요한 상식이라고 ...
    • 도니
      2002.12.28 00:51
      그렇군요..거기도 한번 검색해 봐야겠네요.>^^;; 출력할때 마다 값이 증가한다는건요.. 프리뷰에서 미...
    • 임형호
      2002.12.28 01:26
      혹시 찾고 계신게 ForceNewPage 속성이 아니신지요..???
    • 열심히
      2002.12.27 22:48
      출력할떄마다 값이 증가하는 이유는.. 메모리 해제가 제대로 안됐던것 같네요... create(appli...
    • 2002.12.28 00:30
      혹시 BeforePrint라는 Event에서 값을 설정한게 아닙니까? BeforePrint는 Preview에서도 그리고 Print를 ...
    • 도니
      2002.12.28 00:13
      메모리 해제할 필요없이 출력한번하고난뒤에 초기화를 해주면 될꺼 같은데.. 어디서 해줘야하는지요.. ...
    • jangumma
      2002.12.28 05:12
      혹시 이걸 찾는 건 아닌지? TQRExpr의 속성 중 ResetAfterPrint를 True로 설정 하심이... TQRLabel을...
    • • • •
    • 최용일
      2002.12.27 22:34
      안녕하세요. 최용일입니다. 허~ 질문이 참 황당하네요... 뭐 아무런 설명도 없이 무작정 발신자 번호 표...
    • 미니
    • 2002.12.27 21:26
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 구창민
      2002.12.27 22:50
      안녕하세요~ 구창민입니다. 아래 코드는 파워러브델파이에 기고 되었던 MDI 차일드 폼을 DLL 로 사용...
    • 미니
      2002.12.27 23:02
      답변주셔서 감사합니다. 죄송하지만 제가 질문을 잘못한거 같군요 ! 제 말은 메인폼에서 호출할 DLL폼이 ...
    • 도니
    • 2002.12.27 21:08
    • 5 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2002.12.27 22:37
      안녕하세요. 최용일입니다. if Dialog.Execute then begin   파일열기;   파일...
    • LuckyBoy
      2002.12.27 21:27
      MessageBox의 Help를 찾아보시면 답이 나와 있습니다.. 하시고 싶은 메세지를 띄울때.. 다음과 같이 해...
    • 도니
      2002.12.27 21:50
      또 메세지 박스가 아니라요.. 세이브다이얼로그에서...취소를 누르면.. 저 밑에 파일 저정하는 부분에서 ...
    • 구창민
      2002.12.27 22:08
      안녕하세요~ 구창민입니다 취소시에는 if SaveDialog.FileName = '' then 이렇게 비교하면 되겠죠. ...
    • 도니
      2002.12.27 22:28
    • 최용일
      2002.12.27 22:42
      안녕하세요. 최용일입니다. 좌표로 자식윈도우핸들구할때는 ChildWindowFromPoint 이 함수 쓰구요... ...
    • 초보짱..
    • 2002.12.27 15:35
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 구창민
      2002.12.27 23:29
      안녕하세요~ 구창민입니다. 아래 코드처럼,   try     ...  &...
    • 초보짱..
      2002.12.28 02:37
      --------------------- 님 감사합니다....^^ 그런데 그렇게 해보니 에러메세지스트링은 받을수 있는데 ...
    • goodlsw
    • 2002.12.27 10:57
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 엄화용
    • 2002.12.27 09:54
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 열심히
      2002.12.27 20:43
      조인이 하나만 걸린게 아니라 두번 걸렸다는 뜻인데요.. 이 세개의 테이블을 조인하면서 님이 원하시는 ...
    • Formas
    • 2002.12.27 07:28
    • 1 COMMENTS
    • /
    • 0 LIKES
    • DelChoBo
      2002.12.27 21:00
      아래와 같이 pchar()로 해보시길.. MessageBox(0,pchar(inttostr(100)),'test',MB_OK) 그럼..
    • DelChoBo
      2002.12.27 20:53
      pas에서와 동일합니다. uses에 해당 컴포넌트에 관련된 파일을 추가해 주시고, var 부분에 선언, Create ...