Q&A

  • DBGrid 에서 update시
예를 들어
seq    name     date        
  1         A  
  2         B
  3         A
  4         C
  5         C
    위와 같은 내용이 있을시 1. A의 날짜를 수정하면 3.A의 날짜도 동일하게
    저장하도록 하고싶습니다.
    근데 이거 하나만 수정한 경우는 해결하겠는데
   1.A를 고치고 2.b를 고쳐도 저장이 되잖아요.(저장버튼은 한번)
    이런경우엔 3.a에 어떻게 데이타를 자동으로 넣을수 있나요.
   또 1.a와 4.c를 둘다 고쳤을경우 저장버튼 한번으로 3.a, 5.c를 동시에    
   update시키고 싶습니다.
   지금 UpadateSQL를 사용하고 있습니다.
   이벤트를 사용하는 방법도 있을거같긴한데....
    

2  COMMENTS
  • Profile
    장태원 2003.08.09 02:54
    데이타베이스는 레코드 구조를 가지고 있기 때문에..

    동시에 여러레코드를 한번에 수정하여 저장하는 경우는 다음과 같이 반복되어야합니다.


    첫번째방법
    update TABLE set name ='newname1' where name ='A';
    update TABLE set name ='newname2' where name ='B';

    sol) 'A' 인 항목을 모두 newname1 으로 변경
          'B' 인 항목을 모두 newname2 로 변경

    두번째방법
    update TABLE set name='newname' where Seq=1 and name='A';
    update TABLE set name='newname' where Seq=2 and name='B';

    세번재방법

    트리거를 사용하는 방법이 잇는데 비추천입니다.. 설명은 안하겠습니다.

    TDataset 계열의 컴퍼넌트 이벤트로는 beforepost 나 afteredit 등을 이용하셔도 됩니다.


  • Profile
    열심히 2003.08.09 04:18
    테이블 구조를 바꾸는게 좋을것 같습니다...

    마스터 디테일 구조로요..

    아래의 테이블만 보고 이용을 한다면...

    마스터 필드 name, date

    디테일필드 name, seq, 내역1, 내역2,...

    이렇게 하시는게 맞는 방법인거 같습니다..

    꽁수를 쓰다가 무결성을 해칠수도 있으니......