Q&A

  • 자동 commit이 안되게 어케 하는지..(빨리 답변 해주세요)
BDE에 다음과 같이 적혀 있습니다.

SQLPASSTHRU MODE=SHARED AUTOCOMMIT



dbgrid를 이용해 추가, 수정작업을 하려고 합니다..

여러 레코드를 추가 혹은 수정한 후 저장 버튼을 누를때만 저장이 되고,

그렇지 않고 종료할시에는 수정된 사항이 db에 반영이 안 되었으면 하거든요..

근데 cashedupdate를 이용했는데도 저장 버튼을 안 눌러도,

제일 마지막에 추가된 레코드만 취소가 되고,

나머지는 그대로 db에 반영되어 버립니다...



어케 처리가 되어야 하는지 자세히 가르켜 주세요..

제발...



3  COMMENTS
  • Profile
    coolling 2001.02.05 21:55
    데이터베이스 컴포넌트를 사용하면 됩니다. 옵션중에 noAutoCommit으로 바꾸거나

    BDE에서 SQLPASSTHRU MODE=SHARED NOAUTOCOMMIT 으로 고쳐주면 됩니다.



    초보 wrote:

    > BDE에 다음과 같이 적혀 있습니다.

    > SQLPASSTHRU MODE=SHARED AUTOCOMMIT

    >

    > dbgrid를 이용해 추가, 수정작업을 하려고 합니다..

    > 여러 레코드를 추가 혹은 수정한 후 저장 버튼을 누를때만 저장이 되고,

    > 그렇지 않고 종료할시에는 수정된 사항이 db에 반영이 안 되었으면 하거든요..

    > 근데 cashedupdate를 이용했는데도 저장 버튼을 안 눌러도,

    > 제일 마지막에 추가된 레코드만 취소가 되고,

    > 나머지는 그대로 db에 반영되어 버립니다...

    >

    > 어케 처리가 되어야 하는지 자세히 가르켜 주세요..

    > 제발...

    >

  • Profile
    초보 2001.02.05 22:38
    coolling wrote:

    > 데이터베이스 컴포넌트를 사용하면 됩니다. 옵션중에 noAutoCommit으로 바꾸거나

    > BDE에서 SQLPASSTHRU MODE=SHARED NOAUTOCOMMIT 으로 고쳐주면 됩니다.

    >



    BDE에서 SQLPASSTHRU MODE=SHARED NOAUTOCOMMIT 로 처리해줄수 없는 상황입니다..

    query의 cashedupdate를 이용해서 코딩을 하려고 하는데..

    뜻대로 되질 않아서...

    그리드에서 수정하거나 추가하고 싶은 내용을 모두 작업한 후

    저장버튼을 눌렀을 경우에만 db에 반영 되게 하고...

    그렇지 않을 경우에는 그냥 취소하고 싶거든요...

    방법을 자세히 알려주세요...



  • Profile
    coolling 2001.02.06 03:36
    데이터베이스를 뭘 사용하시는지 궁금하네요..



    BDE에서 SQLPASSTHRU MODE=SHARED NOAUTOCOMMIT 로 처리해줄수 없는 상황이라면,

    데이터베이스 컴포넌트를 사용해서 BDE를 제어하면 됩니다.. 이것 마저도 업렵다며.. 글쎄요??



    cashedupdate를 이용한다고 하셨는데..

    cashedupdate의 메소드를 보면,

    ApplyUpdates : 지금까지의 모든 갱신된것을 실제 테이블에 적용.

    CancelUpdates : ApplyUpdate이후 갱신된것을 모두 취소.

    CommitUpdates : 실제 데이터베이스에 적용한 버퍼내용 clear

    그리고 몇가지다 더 있는걸로 기억하는데.. 이것들을 잘사용하면, 원하는 결과를 얻을수 있을겁니다.

    cashedupdate에 대한 내용을 좀더 보세요..^^