Q&A

  • 다시한번 더 질문 드립니다. 도와주세요!
질문번호 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개 이상 쓸 수가 없는건지...

여하튼 보시고 헬프미 입니다.(자꾸 질문만 하게 되네요 죄송하게시리...)

부탁합니다. 제발 도와주세요! 프리즈~~~

5  COMMENTS
  • Profile
    하얀까마귀 2000.09.25 19:44
    안녕하세요 하얀까마귀 입니다.



    환경에 대한 설명이 없어서 정확한 답변은 못할것 같고...



    소스에 틀린 부분은 없는것 같네요..



    그냥 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개 이상 쓸 수가 없는건지...

    > 여하튼 보시고 헬프미 입니다.(자꾸 질문만 하게 되네요 죄송하게시리...)

    > 부탁합니다. 제발 도와주세요! 프리즈~~~

  • Profile
    바보감자 2000.09.25 02:06
    제임스박 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개 이상 쓸 수가 없는건지...

    > 여하튼 보시고 헬프미 입니다.(자꾸 질문만 하게 되네요 죄송하게시리...)

    > 부탁합니다. 제발 도와주세요! 프리즈~~~





    ^^ 저두 초보인데 제가 실험은 안해봐서리 몰르겠는데염..

    그냥 소스 보다가 생각난건데

    2번이 먼저 실행되죠.?

    그다음 1번 실행 되서 다시 뿌리는거 같은데...

    2번 쿼리가

    1닫고 2실행 3열고. 이네염..

    그리고 바로 1번 쿼리가 닫고 실행 열고 들어가네염..

    2번 쿼리 닫아주어야 1번 쿼리가..데이타 베이스를 만질수있죠..

    2번 쿼리가 실행 중이니. 1번쿼리가 안되는것이 아닐까염..

    짧은 바보에 생각이였슴니다. 함 해보세요.. *^.^* (컴퓨터가 앞에 있으면 자신있게

    알려드리는데 ^^;;)

    죄송합니다. 제가 실험을 해볼수있는컴퓨터에 안자있지를 않아서리.^^;;

    함 해보세염 안되면 어쩔수 없구염 *^.^*

    그럼 이만...

    좋은 답변인가.. 아님.. ^^;;





    언제나 비를 기다리는 바보감자가.. 올림.





  • Profile
    제임스박 2000.09.25 02:42
    답변은 감사하지만 역시 안되는군요!

    참고로 dataset는 query1으로 연결되어있습니다. query2는 sql문을 실행시켜서 Update

    만 합니다. 정녕 이 문제를 해결할 수 없단말인가? 흑흑흑...

    누구 좀 시원하게 해결할 수 있는 답변을 주실 분은 참말로 없는겨?



  • Profile
    성더기 2000.09.26 01:47
    제임스박 wrote:

    > 답변은 감사하지만 역시 안되는군요!

    > 참고로 dataset는 query1으로 연결되어있습니다. query2는 sql문을 실행시켜서 Update

    > 만 합니다. 정녕 이 문제를 해결할 수 없단말인가? 흑흑흑...

    > 누구 좀 시원하게 해결할 수 있는 답변을 주실 분은 참말로 없는겨?

    >

    미테꺼에 이어서 참고로...

    테이블서에 '대리점'다음이나 앞에 공백이 있는지두 확인해 보시길

    if ('대리점' = '대리점 ') then --> False입니다..

    그러니깐 조건을 companyname like ''%대리점%'' 로두 해보시구여..^^

    거럼 도움이 되시길 빌면서...

  • Profile
    성더기 2000.09.26 01:43
    제임스박 wrote:

    > 답변은 감사하지만 역시 안되는군요!

    > 참고로 dataset는 query1으로 연결되어있습니다. query2는 sql문을 실행시켜서 Update

    > 만 합니다. 정녕 이 문제를 해결할 수 없단말인가? 흑흑흑...

    > 누구 좀 시원하게 해결할 수 있는 답변을 주실 분은 참말로 없는겨?

    >



    혹쉬 이걸지두 몰겄네여..

    sqlstring := 'select * from tblcost where companyname = "대리점" order by goodcode'

    --> 을여...

    sqlstring := 'select * from tblcost where companyname = ''대리점'' order by goodcode'

    으루 바꿔보셈..



    쿼리에서 가끔씩 더블쿼테이션이 안먹을때두 있더라구여..