2개의 테이블을 Left Outer Join 했습니다.
테이블은 아래와 같고요
<학생테이블> <성적테이블>
학번 이름 학번 중간 기말 총점
1111 홍길동 1111 100 50 150
1112 유비 1112 90 80 170
1113 관우
UpdateSQL,Query,DataSource를 써서 삭제를 하면 테이블에서 지워지는데...
테이블을 열었다 닫으면 삭제되지 않고 자료가 남아있고요..
입력,수정은 입력/수정하는 모드가 아니라고 에럭가 나는데요
제가 updatesql 컴포넌트를 써보질 않아서 어떻게 해야 될지 모르겠습니다.
아시는분은 죄송하지만 소스까지 자세히 설명해 주시면 감사하겠습니다.
글 읽어 주셔서 감사합니다.
일단, 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으로 대입시키면 되겠죠?