Q&A

  • EDBEngineError에 관한 질문
안녕하세요... ^^



Table에 Data를 입력할때, 여러가지 제약조건이 따르 잖아요...



예를 들어.. 어떤 field에는 유일한 값만을 입력해야하고, 어떤field는 숫자만 입력 받을 수 있고, 어떤 field에는 문자만 입력 받을 수 있고... 등등 이런것들 말이예요...



그래서... Table에 입력하는 입력 버튼을 눌렀을때 발생하는 에러들을 메세지로 보여 주고 싶은데...



구체적으로 어떤 필드값의 입력데이타가 틀렸다는 것 까진 아니지만...



procedure TForm1.Button1Click(Sender: TObject);

begin

with dm.Table1 do

begin try

Post;

except on E: EDBEngineError do

begin

if E.Errors[E.Errorcount - 1].ErrorCode = DBIERR_KEYVIOL then

ShowMessage('코드중복입니다.')

else

ShowMessage('입력오류입니다.');

Cancel;

end;

else

begin

ShowMessage('입력오류입니다.');

Cancel;

end;

end;

end;

end;



이렇게 해서... 입력 오류라는 메세지만 뿌릴 수 있게 해봤거든요...

(겨우 겨우 여기저기 찾아 보구 알아낸 소스랍니다^^;;;)



그런데... 문제는... ('입력 오류입니다')라는 메세지가 보여 지기 전에...



델파이 프로그램 실행 에러가 난다는 것이지요!_!

그래서 실행중인 프로그램이 멈추고 [Project Project1.exe raised exception class EDBEngineError with message 'Key violation.',Process stopped. Use Step or Run to continue.] 이런 에러 메세지가 뜬 후에.. 다시 실행 버튼을 누르면 재실행이 되면서,(코드 중복오류입니다)라는 제가 만든 메세지가 보인다는 것이예요...



에러 메세지를 유도하기 위해 일부러 에러를 낸것이지만, 프로그램이 멈추지 않고 계속 실행 되면서 에러 메세지를 보여 줄 수 있는 방법은 없는 것인가요? !_!

(아... 항상 제가 제대로 질문을 하고 있는 건지... 제일 걱정스럽습니다...=_=)



그리고, EDBEngineError코드(ex.ErrorCode = DBIERR_KEYVIOL)나 그에 대한 더 자세한 것을 알고 계신 분, 그런 정보가 어디에 있다는 것 알고 계시면... 좀 가르쳐 주세요...^^

제가 초보라서 그런지... 사용자들에게 구체적으로 "어떤 필드값의 입력이 틀려서... Table에 입력할 수 없다."라는 자세한 에러 메세지를 뿌려 주고 싶거든요... ^^



책에도... 자세하게 Error코드는 나와있지 않더라구요...



꼬오옥... 부탁 드릴께요...



참고로 저는 지금 부끄럽지만^^;;;delphi4로 오라클DB에 접속해서 데이타를 처리하는 프로그램을 제작중입니다^^





*p.s:바람에 날씨가 무지 쌀쌀하네요...

옷따뜻하게 입고 외출하세요...^^

그럼... 항상 건강하시고 행복하시길...^^











-어제 하루 종일 DBERROR때문에 속썩은 매경이가...-

1  COMMENTS
  • Profile
    정화 1999.11.25 18:23
    delphi에서 실행했을경우 error 발생시 먼저 delphi BDE쪽에서 메세지를 뿌려준다고

    들었습니다. 그리고나서 발생하는 사용자 error 메세지를 뿌려주죠

    아마 delphi에서 말고 실행파일을 바로 실행하면 사용자 error메세지만 뿌려지겠지요..







    김매경 wrote:

    > 안녕하세요... ^^

    >

    > Table에 Data를 입력할때, 여러가지 제약조건이 따르 잖아요...

    >

    > 예를 들어.. 어떤 field에는 유일한 값만을 입력해야하고, 어떤field는 숫자만 입력 받을 수 있고, 어떤 field에는 문자만 입력 받을 수 있고... 등등 이런것들 말이예요...

    >

    > 그래서... Table에 입력하는 입력 버튼을 눌렀을때 발생하는 에러들을 메세지로 보여 주고 싶은데...

    >

    > 구체적으로 어떤 필드값의 입력데이타가 틀렸다는 것 까진 아니지만...

    >

    > procedure TForm1.Button1Click(Sender: TObject);

    > begin

    > with dm.Table1 do

    > begin try

    > Post;

    > except on E: EDBEngineError do

    > begin

    > if E.Errors[E.Errorcount - 1].ErrorCode = DBIERR_KEYVIOL then

    > ShowMessage('코드중복입니다.')

    > else

    > ShowMessage('입력오류입니다.');

    > Cancel;

    > end;

    > else

    > begin

    > ShowMessage('입력오류입니다.');

    > Cancel;

    > end;

    > end;

    > end;

    > end;

    >

    > 이렇게 해서... 입력 오류라는 메세지만 뿌릴 수 있게 해봤거든요...

    > (겨우 겨우 여기저기 찾아 보구 알아낸 소스랍니다^^;;;)

    >

    > 그런데... 문제는... ('입력 오류입니다')라는 메세지가 보여 지기 전에...

    >

    > 델파이 프로그램 실행 에러가 난다는 것이지요!_!

    > 그래서 실행중인 프로그램이 멈추고 [Project Project1.exe raised exception class EDBEngineError with message 'Key violation.',Process stopped. Use Step or Run to continue.] 이런 에러 메세지가 뜬 후에.. 다시 실행 버튼을 누르면 재실행이 되면서,(코드 중복오류입니다)라는 제가 만든 메세지가 보인다는 것이예요...

    >

    > 에러 메세지를 유도하기 위해 일부러 에러를 낸것이지만, 프로그램이 멈추지 않고 계속 실행 되면서 에러 메세지를 보여 줄 수 있는 방법은 없는 것인가요? !_!

    > (아... 항상 제가 제대로 질문을 하고 있는 건지... 제일 걱정스럽습니다...=_=)

    >

    > 그리고, EDBEngineError코드(ex.ErrorCode = DBIERR_KEYVIOL)나 그에 대한 더 자세한 것을 알고 계신 분, 그런 정보가 어디에 있다는 것 알고 계시면... 좀 가르쳐 주세요...^^

    > 제가 초보라서 그런지... 사용자들에게 구체적으로 "어떤 필드값의 입력이 틀려서... Table에 입력할 수 없다."라는 자세한 에러 메세지를 뿌려 주고 싶거든요... ^^

    >

    > 책에도... 자세하게 Error코드는 나와있지 않더라구요...

    >

    > 꼬오옥... 부탁 드릴께요...

    >

    > 참고로 저는 지금 부끄럽지만^^;;;delphi4로 오라클DB에 접속해서 데이타를 처리하는 프로그램을 제작중입니다^^

    >

    >

    > *p.s:바람에 날씨가 무지 쌀쌀하네요...

    > 옷따뜻하게 입고 외출하세요...^^

    > 그럼... 항상 건강하시고 행복하시길...^^

    >

    >

    >

    >

    >

    > -어제 하루 종일 DBERROR때문에 속썩은 매경이가...-

    • 최명실
    • 1999.11.25 23:01
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 안정한
      1999.11.26 02:25
      최명실 wrote: > 안녕하십니까? > 저는 은행 전산정보본부에 근무합니다. > > 해외지점 온라인 프로그...
    • 김주석
      1999.11.26 00:13
      윤정선 wrote: > 저는 델파이 초보자 인데요... > 어떤 double형 배열 변수를 다른 Unit에서 쓰고 싶은데...
    • 윤정선
      1999.11.26 19:15
      가르쳐 주신 방법으로 했더니 즉, > public > var d_double // 3 이렇게하면 error가 나구 > public ...
    • 정연섭
    • 1999.11.25 22:30
    • 2 COMMENTS
    • /
    • 0 LIKES
    • TeamX
      1999.11.25 22:48
      WM_GETDLGCODE 인가의 메세지에 적절히 응답하시면 됩니다. 자세한건 확실치 않지만 팁란을 검색해보세...
    • 안재현
      1999.11.26 07:16
      TeamX wrote: > WM_GETDLGCODE 인가의 메세지에 적절히 응답하시면 됩니다. > > 자세한건 확실치 않지...
    • chobo
    • 1999.11.25 21:54
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 김상면
      1999.11.25 22:26
      안녕하세요... Table 컴포넌트를 더블 클릭하세요... 그리고 마우스 오른쪽 버튼을 누르시고 Add All Fie...
    • 안재현
      1999.11.26 07:20
      김상면 wrote: > 안녕하세요... > Table 컴포넌트를 더블 클릭하세요... > 그리고 마우스 오른쪽 버튼을...
    • 길호전
      1999.12.21 05:21
      만약 오라클을 쓴다면 ->123만 보여주고 싶으면 'Select to_number(Substr(Col1, 5,6)) NewCol ' 이렇게...
    • 류한규
    • 1999.11.25 20:56
    • 1 COMMENTS
    • /
    • 0 LIKES
    • Mr. park
      1999.12.18 01:47
      류한규 wrote: > 안녕하십니까? > > Printer.Canvas를 이용하지 않고 아래와 같이 하면 > CloseFile(F...
    • 이재민
    • 1999.11.25 20:41
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 김영대
      1999.11.26 03:02
      이재민 wrote: > 안녕하세요? > > StringGrid에 어떤 자료들을 담았습니다. 그런데 이것을 프린터로 출...
    • sun
    • 1999.11.25 19:52
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 김상면
      1999.11.25 22:06
      안녕하세요... Label1.Caption := FormatFloat('#,##0', StrToFloat(Edit1.Text)); Label1.Caption...
    • 정화
      1999.11.25 22:05
      FormatFloat 함수를 써보세요^^ sun wrote: > Label에 출력된 Data에 콤마 또는 소숫점 찍는 방법 좀 ...
    • 송수아
    • 1999.11.25 19:52
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 지승용
      1999.11.25 20:46
      송수아 wrote: > 안녕하세요. > 델파이 프로젝트를 만들다 모르는 것이 있어 글을 올려 봅니다. > 아시...
    • 송수아
      1999.11.26 00:35
      안녕하세요. 지승용님께서 올려주신 답변 고맙습니다. 하지만 제가 델파이에 대해 잘 알지 못해서 지승용...
    • 혀노
      1999.11.27 03:20
      query문을 parameter(철자 맞나?)를 받도록 만드세요 그러니까 조건식을 where 이름 =:name and 학번 =:...
    • 김매경
    • 1999.11.25 17:51
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 정화
      1999.11.25 18:23
      delphi에서 실행했을경우 error 발생시 먼저 delphi BDE쪽에서 메세지를 뿌려준다고 들었습니다. 그리고나...
    • 황현동
    • 1999.11.25 11:24
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 안명호
      1999.11.25 11:37
      황현동 wrote: > 알려주세요 > > 사용 방법 알려주세요.. GetCursor() 현재 마우스 커서의 핸들...
    • jdfm
    • 1999.11.25 09:34
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 문영미
    • 1999.11.25 07:28
    • 1 COMMENTS
    • /
    • 0 LIKES
    • TeamX
      1999.11.25 09:24
      일반적으로 실행시킨 프로그램이 죽지 않았을때 생깁니다. 즉! 윈도우즈는 어떤 프로그램이 실행중일때...
    • 이동진
    • 1999.11.25 06:37
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이동진
      1999.11.25 06:38
      이동진 wrote: > 우리나라 총 인구는 몇 명인가요? >
    • 희야
    • 1999.11.25 06:30
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 김종섭
      1999.11.25 09:39
      희야 wrote: > dbgrid에 커서를 두구 직접 키보드 입력을 하니깐 되는데요. > dbgrid에 query를 사용하...
    • 희야
      1999.11.25 18:09
      김종섭 wrote: > 희야 wrote: > > dbgrid에 커서를 두구 직접 키보드 입력을 하니깐 되는데요. > > dbg...
    • 박성훈
      1999.11.26 21:30
      희야 wrote: > 김종섭 wrote: > > 희야 wrote: > > > dbgrid에 커서를 두구 직접 키보드 입력을 하니깐...