다덜 델파이 하느라 수고가 많지요?
그러나 저같이 몬하는 사람 좀 도와주세요!
말씀 그대로 Update한 내용을 디비그리드에 바로 나타낼려고 합니다.
근데 Update는 되는데 update한 내용은 디비그리드에 하나도 나타나질 않습니다.
참고로 제가 작성한 소스는 다음과 같습니다.
if copy(edcompany1.text,length(edcompany1.text) - 6 + 1,6) = '대리점' then
begin
query2.close;
query2.SQL.Clear;
sqlstring := 'update tblcost set cost = "' + edgoodcost.text + '" where goodcode = "' + edgoodcode.text + '" and companyname = "대리점"';
query2.sql.add(sqlstring);
query2.execsql;
query1.Close;
query1.sql.Clear;
sqlstring := 'select * from tblcost where companyname = "대리점" order by goodcode';
query1.sql.add(sqlstring);
query1.open;
btnupdate.Caption := '수 정';
btninput.Enabled := true;
btndelete.Enabled := true;
edgoodcode.Text := '';
edgoodcost.text := '';
edgoodcode.setfocus;
end
위와 같이 쿼리콤포넌트 2개를 써서 하나(query2)는 Update하는데 사용하고 또 다른 하나(query1)는 수정한 내용을 실시간으로 디비그리드에 나타내려고 하는데 하나도 안 나타나내요!
물론 query1가 디비에 연결되어 있고 active값도 true로 설정되어있으며 datasource콤포넌트로 모두 연결되어 있습니다.
소스가 잘못됐나 싶어 뚫어지고 보고 또 보고 있어도 잘못된데는 없어 보이는디...
한 곳에서 query콤포넌트 2개 이상 쓸 수가 없는건지...
여하튼 보시고 헬프미 입니다.(자꾸 질문만 하게 되네요 죄송하게시리...)
저도 초보라서 큰 도움이 될지는 모르겠지만, 나름대로 해결법을 찾아봤습니다.
우선 Query1을 Update용이라 보았을때, Query1의 이벤트에 보시면 AfterPost가 있습니다.
이곳에 DBGrid와 연결된 Query2를 다시 오픈하시면 됩니다.
단순히 Query2.Refresh와 같은 것을 사용하시면 안되구요, Query2.Close; Query2.Open을
사용하셔야 합니다.
UpdateSQL에 대해 참고로 말씀을 드리겠습니다. 저도 UpdateSQL을 사용하고는 있지만
정확하게 설명할 자신은 없습니다. 다만, 로컬데이터베이스(Paradox, DBF등)에서 RDBMS가
제공하는 트랜잭션을 처리할 수 있는 기능을 구현하는 것 정도로 알고 있습니다.
DB 프로그래밍 입문자이시면 "델파이 데이터베이스 완벽가이드 - 가남사"을 보시는 것도
좋습니다. 저도 이 책을 보면서 많은 것을 배우고 있으니까요.
그럼....