Q&A

  • Join된 Query에서 입력,수정,삭제는 어떻게...
2개의 테이블을 Left Outer Join 했습니다.
테이블은 아래와 같고요

<학생테이블>                      <성적테이블>
학번       이름                      학번      중간       기말       총점
1111      홍길동                    1111      100          50         150
1112      유비                       1112      90            80         170
1113      관우

UpdateSQL,Query,DataSource를 써서 삭제를 하면 테이블에서 지워지는데...
테이블을 열었다 닫으면 삭제되지 않고  자료가 남아있고요..
입력,수정은 입력/수정하는 모드가 아니라고 에럭가 나는데요

제가 updatesql 컴포넌트를 써보질 않아서 어떻게 해야 될지 모르겠습니다.
아시는분은 죄송하지만 소스까지 자세히 설명해 주시면 감사하겠습니다.
글 읽어 주셔서 감사합니다.
2  COMMENTS
  • Profile
    김경록 2002.05.30 18:21
    가능합니다..
    일단, UpdateSQL컴포넌트의
    ModifyUpdate부분을
    수작업으로 수정해 주시면 됩니다..

    그리고, 삭제되어진게 남아 있는것은..
    CommitUpdate를 시켜 주세요..
    Query컴포넌트의 AfterDelete이벤트나..
    Delete버튼을 만드셨다면..
    그곳에..
    Query1.Delete;
    Query1.CommitUpdate;
    하시면 됩니다..

    UpdateSQL로 사용할때에는
    Query컴포넌트의 CachedUpdate속성이 True여야 합니다..


    그리고, 입력, 수정, 삭제를 따로 따로 설정할 수 있습니다..
    그러니까.. 여러테이블을 조인해서 들고와도..
    Insert, Modify, Delete에
    다른 Query를 사용해서 사용할 수 있습니다..
    물론, 기존의 UpdateSQL에 있는 문장을 참조하셔서 사용하면 됩니다..
    예)
    ModifySQL 부분
        update 테이블1
            set  테이블1.필드  =  값
      where 테이블1.key필드 = :테이블1.key필드


    InsertSQL 부분

    insert into 테이블2
    (테이블2.필드1, 테이블2.필드2, 테이블2.필드3)
    values
    (:테이블2.필드1, :테이블2.필드2, :테이블2.필드3)


    deleteSQL부분

    delete from 테이블3
    where 테이블3.key필드 = 값

    위와같이 UpdateSQL에 따른 코딩을 하셔서 사용해도 됩니다..



    만약, 어느한부분만 다른 테이블에 대해서 Action을 취할려면,
    그부분에 대해서만 Query를 수정해 주셔도 됩니다..
    물론, Realtime(실행시)에도 수정할 수 있습니다..
    해당 내용은 모두 string으로 저장되어 있으니..
    당연히 해당SQL문장에 String으로 대입시키면 되겠죠?






  • Profile
    하얀까마귀 2002.05.30 13:59
    안녕하세요 하얀까마귀 입니다.

    요즘 디비를 안한데다가. 전 UpdateSQL을 좀 안좋아하는 편이라 거의

    사용하지 않습니다만...

    음.. update 나 insert는 테이블 단위로만 하게 되어 있습니다..

    그런데 님처럼 inner join 이나 outer join 을 하게 되면.. 테이블이 몇개가

    될지 알수 없어요. 해당 테이블별로 각각 쿼리가 동작해야 하는데.
    그렇게 할려면 해당 테이블의 키값을 모두 알아야만 하며. join 이라는게
    그런식으로 동작한다고 해서 정확한 동작이라고는 볼수 없지 않아요??
    제가 알기로는 updateSQl은 join 이나 어떤 함수를 이용해서 부른 쿼리는

    동작하지 않습니다.

    다시 말하면 그냥 단순하게 테이블 불러서 사용하는 쿼리에서만 가능합니다.

    그러니깐 님처럼 join을 한경우에는 사용할수 없겠죠.

    직접 구현하셔야만 가능할껍니다. 그럼 즐거운시간되세요..


    - 하얀까마귀 -