질문번호 26565번에 대한 답변 감사드립니다. 창돌이님,성더기님,bassmania님 모두 감사합니다. 그런데 모두 하라는데로 했는데 잘 되질 않습니다. 그래서 다시 한번더 올립니다.
급한문제라 해결을 꼭 해야 됩니다. 안되면 저 회사에서 짤립니다. 흑흑...
내용은 다음과 같습니다.
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개 이상 쓸 수가 없는건지...
여하튼 보시고 헬프미 입니다.(자꾸 질문만 하게 되네요 죄송하게시리...)
부탁합니다. 제발 도와주세요! 프리즈~~~
환경에 대한 설명이 없어서 정확한 답변은 못할것 같고...
소스에 틀린 부분은 없는것 같네요..
그냥 update하고 다시 select하는 거니까 에러날만한게 없을것 같네요..
음.. 생각나는건 CashedUpdates 라고 하는 Query의 속성입니다..
요놈이 True로 되어 있으면 이건 ApplyUpdates를 해야만 실제 디비에 기록이 됩니다..
그리고 이건 디비엔진 에서 'commit' 을 시켜 주어야만 실제로 저장이 되죠..
실제 디시크에 기록하는게 DBISaveChanges(TQuery1.Handle);
이걸 update 다음에 부르시면 아마 될겁니다. 그럼..
즐거운시간 되세요..
- 초보 하얀까마귀 -
제임스박 wrote:
> 질문번호 26565번에 대한 답변 감사드립니다. 창돌이님,성더기님,bassmania님 모두 감사합니다. 그런데 모두 하라는데로 했는데 잘 되질 않습니다. 그래서 다시 한번더 올립니다.
> 급한문제라 해결을 꼭 해야 됩니다. 안되면 저 회사에서 짤립니다. 흑흑...
> 내용은 다음과 같습니다.
> 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개 이상 쓸 수가 없는건지...
> 여하튼 보시고 헬프미 입니다.(자꾸 질문만 하게 되네요 죄송하게시리...)
> 부탁합니다. 제발 도와주세요! 프리즈~~~