Q&A

  • 데이타베이스에 대한 짜릿한 질문이요..
안녕하십니까

데이타베이스에 대하여 한가지 물어볼일이 있습니다.

프로그램을 짜다가 막상 느낀것인데

테이블을 마스터/디테일 관계를 나누었습니다.

그런데 디테일에 들어갈 자료는 DBgrid 상에서 입력하여 저장하도록 하기로 했습니다.

일단 DBgrid 상에 자료를 입력한 다음 저장 키를 눌렸을 경우 입력된 자료를 전체적

으로 테이블에 저장할려고 합니다. 물론 저장 키를 누르지 않으면 테이블에 저장하면

되지 않습니다.

그렇다면 저의 소견으로는 임시적으로 버퍼에 담아야 할것 같은데 이런 상황을 델파이

에서는 어떻게 구사하여야 하는지 가르쳐 주십시요.

도사님의 조언 부탁 드립니다.



1  COMMENTS
  • Profile
    오승섭 1999.10.19 01:45
    안녕하셔요....

    Delphi에서 그러한 Transaction 처리는 Database Component가 담당을 합니다.

    Tansaction의 시작은 StartTransaction으로 Transaction의 끝은 Commit이나 Rollback

    으로 처리하면 됩니다.

    그럼 작업의 순서를 보면

    1. Insert나 Edit전에 Transasction을 시작한다.

    >Database1.StartTransaction;

    >Table1.Edit(혹은Insert); -- Table1은 Detail임



    2. 입력 또는 수정된 자료를 저장(Post)한다.

    DBGrid상에서는 Record이동시 자동으로 수정(등록)된 자료가 Post된다.



    3. 저장버튼을 눌러 Post된 자료를 DB에 Commit시킨다.

    >Database1.Commit; --작업 저장시

    >Database1.Rollback; --작업 취소시



    Database의 Transaction은 Commit또는 Rollback시 자동으로 해제가 되며,

    Post상태인 자료에 대해서는 다른사용자가 수정및 삭제가 불가능하도록 DB에서

    Locking을 거는데 Commit과 Rollback처리가 되어야 다른사용자가 사용할 수 있으므로

    Transaction단위는 짧게 처리할 수록 좋습니다.





    hopeship wrote:

    > 안녕하십니까

    > 데이타베이스에 대하여 한가지 물어볼일이 있습니다.

    > 프로그램을 짜다가 막상 느낀것인데

    > 테이블을 마스터/디테일 관계를 나누었습니다.

    > 그런데 디테일에 들어갈 자료는 DBgrid 상에서 입력하여 저장하도록 하기로 했습니다.

    > 일단 DBgrid 상에 자료를 입력한 다음 저장 키를 눌렸을 경우 입력된 자료를 전체적

    > 으로 테이블에 저장할려고 합니다. 물론 저장 키를 누르지 않으면 테이블에 저장하면

    > 되지 않습니다.

    > 그렇다면 저의 소견으로는 임시적으로 버퍼에 담아야 할것 같은데 이런 상황을 델파이

    > 에서는 어떻게 구사하여야 하는지 가르쳐 주십시요.

    > 도사님의 조언 부탁 드립니다.

    >