Q&A

  • Record not found란 에러가 자꾸...
납품한 프로그램에서 너무 자주 Record not found란 에러가 발생합니다.

그 프로그램에 사용되는 여러 파라독스 디비 파일중 하나의 파라독스 디비 파일을 여러 TTable 콤포넌트 에서 불러 쓰거든요.

이중 한 TTable 콤포넌트 에서 다수의 Record를 수정하는 코드를 실행하면 이런 일이 벌어지네요.

근데, 다른 시스템에서 이 프로그램을 실행하면, 문제없이 돌아가거든요.

이 시스템이 문젠가요.

그리고, 이 시스템에서는 자주 디비 파일이 깨지는군요.



혹시, 어떤 시스템에서는 자주 문제가 발생하던 경험이 있으신 분들의 조언 구함니다.



4  COMMENTS
  • Profile
    김광섭 2000.03.06 20:27
    박형일 wrote:

    > 납품한 프로그램에서 너무 자주 Record not found란 에러가 발생합니다.

    > 그 프로그램에 사용되는 여러 파라독스 디비 파일중 하나의 파라독스 디비 파일을 여러 TTable 콤포넌트 에서 불러 쓰거든요.

    > 이중 한 TTable 콤포넌트 에서 다수의 Record를 수정하는 코드를 실행하면 이런 일이 벌어지네요.

    > 근데, 다른 시스템에서 이 프로그램을 실행하면, 문제없이 돌아가거든요.

    > 이 시스템이 문젠가요.

    > 그리고, 이 시스템에서는 자주 디비 파일이 깨지는군요.

    >

    > 혹시, 어떤 시스템에서는 자주 문제가 발생하던 경험이 있으신 분들의 조언 구함니다.

    >

    김광섭 wrote:

    제가 몇자 적어 보겠습니다.

    우선 코딩한 부분에 로직상에 문제는 없는듯합니다.

    다만, 제 경험으로 Record not found란 에러는 테이블이 깨어지면서 발생하더군요.

    델파이에서 제공하는 DTUTIL32.Exe 인덱스 복구 유틸을 사용하시면 복구가 됩니다.

    혹, 테이블 이벤트중 AfterPost에 DBiSaveChanges((DataSet As TTable).Handle)이 있는지요? 있다면 수정코딩을 테이블 메서드 대신에 SQL 쿼리문으로 수정을 하는 방법도 있네요.

    조금이나마 도움이 됐으면 좋겠네요.



  • Profile
    박형일 2000.03.07 02:00
    김광섭 wrote:

    > 박형일 wrote:

    > > 납품한 프로그램에서 너무 자주 Record not found란 에러가 발생합니다.

    > > 그 프로그램에 사용되는 여러 파라독스 디비 파일중 하나의 파라독스 디비 파일을 여러 TTable 콤포넌트 에서 불러 쓰거든요.

    > > 이중 한 TTable 콤포넌트 에서 다수의 Record를 수정하는 코드를 실행하면 이런 일이 벌어지네요.

    > > 근데, 다른 시스템에서 이 프로그램을 실행하면, 문제없이 돌아가거든요.

    > > 이 시스템이 문젠가요.

    > > 그리고, 이 시스템에서는 자주 디비 파일이 깨지는군요.

    > >

    > > 혹시, 어떤 시스템에서는 자주 문제가 발생하던 경험이 있으신 분들의 조언 구함니다.

    > >

    > 김광섭 wrote:

    > 제가 몇자 적어 보겠습니다.

    > 우선 코딩한 부분에 로직상에 문제는 없는듯합니다.

    > 다만, 제 경험으로 Record not found란 에러는 테이블이 깨어지면서 발생하더군요.

    > 델파이에서 제공하는 DTUTIL32.Exe 인덱스 복구 유틸을 사용하시면 복구가 됩니다.

    > 혹, 테이블 이벤트중 AfterPost에 DBiSaveChanges((DataSet As TTable).Handle)이 있는지요? 있다면 수정코딩을 테이블 메서드 대신에 SQL 쿼리문으로 수정을 하는 방법도 있네요.

    > 조금이나마 도움이 됐으면 좋겠네요.

    >



    김광섭님의 조언 감사드립니다.

    그런데, 말씀하신 테이블 이벤트핸들러 AfterPost는 있긴한데, DBiSaveChange란 함수는 쓰지 않거든요.

    그리고, Record not found란 메세지는 나오지만, 금방 종료를 하면 테이블이 깨어지진 않습니다.

    그리고, 이 메세지가 너무 많이 나오거든요.

    직접적으로 관련되지 않은 테이블에 자료를 수정, 추가해도 나와버립니다.

    사용자는 펜티엄III에 32M램을 가진 시스템( 세상에 이런 시스템이!) 을 이용하는데, 시도때도 없이 이 메세지가 나온다니 전 무지 난감합니다.



    혹시, BDE의 설정이 잘못되었거나, 잘못 설치된건 아닐까요?

    BDE 버전은 5.1입니다.





  • Profile
    강인규 2000.03.07 03:59
    DBiSaveChanges((DataSet As TTable).Handle);



    DBiSaveChanges는 이벤트가 아니라 함수입니다.(맞나?)

    AfterPost이벤트에 위와 같이 코딩하라는 말씀이셨던것 같군요.

    위의 명령은 테이블에 일정량 데이터가 쌓이지 않으면 명령이 실행되지 않는다구 들었습니다.

    맞는진 몰라요. 저도 들은말이라서....



    > 김광섭님의 조언 감사드립니다.

    > 그런데, 말씀하신 테이블 이벤트핸들러 AfterPost는 있긴한데, DBiSaveChange란 함수는 쓰지 않거든요.

    > 그리고, Record not found란 메세지는 나오지만, 금방 종료를 하면 테이블이 깨어지진 않습니다.

    > 그리고, 이 메세지가 너무 많이 나오거든요.

    > 직접적으로 관련되지 않은 테이블에 자료를 수정, 추가해도 나와버립니다.

    > 사용자는 펜티엄III에 32M램을 가진 시스템( 세상에 이런 시스템이!) 을 이용하는데, 시도때도 없이 이 메세지가 나온다니 전 무지 난감합니다.

    >

    > 혹시, BDE의 설정이 잘못되었거나, 잘못 설치된건 아닐까요?

    > BDE 버전은 5.1입니다.



  • Profile
    박형일 2000.03.09 02:53
    유력한 용의자(?)를 찾았습니다.

    SetRange된 Table에서 Locate를 실행시키면 이 에러가 나네요.

    하지만, 다른 상황과 복합적으로 관련되있는것 같네요.



    프로그램의 다른 부분에서도 SetRange된 Table에 Locate함수를 적용시키고 문제가 없거든요.



    하여간, SetRange된 Table에 CancelRange를 적용하고 실행하면 문제가 없습니다.

    하지만 불안 합니다.



    아참, 그리고 BdiSaveChange함수대신에 Table.CheckBrowseMode를 실행하는데 그럼 되지 않을까요?



    여러분도 프로그램 짜깁기 너무 많이 하지 마세요. 프로그램 개판 됩니다.