Q&A

  • UpDateSQL 콤포넌트 기능에 대해서 좀 알려주세요
UpDateSQL 콤포넌트 기능에 대해서 좀 알려주세요..



시간이 되신다면 혹시 예제도 좀 보내주세요..



정말 왕초보라서 궁금한게 많습니다.

1  COMMENTS
  • Profile
    이재식 2000.02.10 13:03
    sun wrote:

    > UpDateSQL 콤포넌트 기능에 대해서 좀 알려주세요..

    >

    > 시간이 되신다면 혹시 예제도 좀 보내주세요..

    >

    > 정말 왕초보라서 궁금한게 많습니다.



    이재식 Wrote :

    안녕하세요?



    델파이 4에 있는 UpdateSQL에 대해서 설명을 잠시 할께요.

    물론 저 역시 초보라 근사한 이야기는 없구요. 그냥 너그러이 보아 주십시요.

    UpdateSQL의 주용도는 다음과 같습니다.

    우리가 조인을 햇다 이거죠. 쿼리 컴포넌트를 써서 말이죠.

    그리고, 그 조인결과를 디비그리드에 뿌렸다 가정합시다.

    그런데, 사용자가 이 조인된 결과를 디비그리드자체내에서 편집을 하고 싶다

    이거죠. 될까요?

    안됩니다. 쿼리 컴포넌트의 RequestLive를 true로 해도 조인된 결과에 대해서는

    편집을 할 수 없습니다.

    그러나, 방법이 있죠. 바로 UpdateSQL입니다.

    쿼리 컴포넌트의 UpdateObject속성에 UpdateSQL를 등록합니다.

    그리고, cachedUpdates속성을 true로 해줍니다.

    물론 UpdateSQL를 더블클릭하셔서 필요한 작업을 해주야 겟죠.

    필요한 작덥은 별거 아닙니다.

    해당 테이블에대해서 필드를 선택하고 sql을 생성해주면 되는 거죠.

    여기서, 아직 UpdateSQL은 두개의 테이블에 대해서 별도의 각각 sql를 만들어

    주질 못하고 단 하나의 테이블에 대해서만 sql를 만들어 줍니다.



    updatesql은 이처럼 편집상태가 안되는 조건에서 디비그리드를 편집상태로

    만들어 주기 위해서 쓰입니다.

    그리고, 일련의 버퍼작업을 합니다. 사실 이것은 CachedUpdate속성이 지원해 주는데,

    우리가 대개 UpdateSQL를 쓴다면 cachedUpdate속성을 true로 해서 작업을 하게 됩니다.

    만약 안그러면 편집이 안 될 것입니다.

    그래서,그냥 UpdateSqL과 cachedUpdate속성은 쌍두마차다 라고 생각하시면 됩니다.



    UpdateSQL의 단점은 테이블간 참조 무결성을 자체적으로 유지해주지 못한다는

    것입니다. 위에서 이야기했듯, 여러 테이블이 조인되었다해도 그중 하나의

    테이블에 대해서만 sql문을 생성하기 때문에 나머지 작업은 프로그래머 몫입니다.



    이에 대한 예제는 ...delphi4/help/example/update디렉토리에 나와있습니다.

    이것은 interBase를 이용한다고 하더군요.

    제가 테스트해볼때는 서버 디비와 interBase에서는 잘 돌아가는데,

    로컬디비(ex, paradox)에서는 잘 통하지 않는 것 같아요.

    paradox는 꼬물~~~.^^



    그런데, 이 UpdateSQL를 단일테이블에서 사용하셔도 됩니다.

    그럼 금상첨화죠. ^^



    다만, 이 컴포넌트를 쓰셔서 어떤 작업을 하다가 컴포넌트 자체에서

    이런저런 문제가 혹 발생한다면 해결할 방법이 없습니다.



    제가 일전에 들은 내용인데요, 인터넷 어느 싸이트에 새로 만든 UpdateSQL이

    있다고들 하더군요.

    그런데, 그것역시 여러테이블을 동시에 관리못해준다고 하더군요.

    뻑이 잘 난데요. 아직 구경 못했지만...



    참, 이것을 사용하려면 applyUpdates, revertRecord, commitUpdates등

    해괴한(?)명령들을 사용합니다.



    델파이 책을 보시면 잘 나와있을 것입니다.



    아이구~~, 이젠 할말이 없네요.

    아무쪼록 조금이나마 도움이 되었으면 해서 글 올렸습니다.