Q&A

  • DBGrid에서 DB필드와 동일한 자료 입력시 에러 처리 방법
안녕하셔요

DBGrid, Table1을 사용하여 DB내용을 추가하고 삭제하는 부분을 만들고 있습니다.



카드번호 이름...

12345 kim

34567 lee



추가(Add)를 누르면 에디트창에서 카드번호를 가져다 DB를 갱신하고 화면에 뿌리려 하는데 문제가 있습니다.



DB에 있는 동일한 카드번호를 넣으면 'Key Violation' 뜨거든요

아예 입력시 DB내용과 동일한 카드번호를 입력하지 못하도록 하든지

입력시 DB의 모든 카드번호 필드를 비교해서 'Key Violation'에러를 사전에 막는 방법은 없는지 알려주셔요?

감사합니다.

1  COMMENTS
  • Profile
    임형호 2000.08.10 00:42
    김용희 wrote:

    > 안녕하셔요

    > DBGrid, Table1을 사용하여 DB내용을 추가하고 삭제하는 부분을 만들고 있습니다.

    >

    > 카드번호 이름...

    > 12345 kim

    > 34567 lee

    >

    > 추가(Add)를 누르면 에디트창에서 카드번호를 가져다 DB를 갱신하고 화면에 뿌리려 하는데 문제가 있습니다.

    >

    > DB에 있는 동일한 카드번호를 넣으면 'Key Violation' 뜨거든요

    > 아예 입력시 DB내용과 동일한 카드번호를 입력하지 못하도록 하든지

    > 입력시 DB의 모든 카드번호 필드를 비교해서 'Key Violation'에러를 사전에 막는 방법은 없는지 알려주셔요?

    > 감사합니다.



    이렇게 하면 어떨까하는데요.

    key violation에러는 post시에 발생하니까 post전에 입력한 값으로 해당DB에 값이 존재하는지를 확인한 후 없으면 post를 시키면 안될까요? 안해봐서 잘 모르겠지만...

    그리고 key violation이라는 에러가 발생했다면 그 필드는 primary key로 지정이 되어있겠군요.

    아님 세컨더리 인덱스로 잡혀있겠죠. 암튼... 두가지 모두 table의 findkey 명령어를 사용하여 검색하면 되실것 같습니다. findkey를 사용해서 검색할때 검색값이 없으면... return 값으로 false를 반환하니까 구분하시면 될것 같습니다.

    더 좋은 방법이 있겠죠. 그냥 참고하세요. 이만..