Q&A

  • procedure의 실행중 gauge에 진행률를 보이고 싶습니다.
아래것을 실행시키면 시간이 좀 걸리는데,

이시간에 진행상황를 보이려고 하는데 어떻게 해야 하나요?

뭐 progressbar나 gauge를 쓰면 될것같은데 모르겠네요.

혹시 아시는 분 있으시면 답변주시면 좋겠습니다.



procedure TSYSSS201Form.Work_BitClick(Sender: TObject);

begin

with MJM_Query do

begin

Close;

SQL.Clear;

SQL.Add('Delete from stockyear');

SQL.Add('where ymd = :ymd');

Prepare;

ParamByname('ymd').AsString := YEAR_Edit.Text;

ExecSql;

end;

with MJM_Query do

begin

Close;

SQL.Clear;

SQL.Add('insert into stockyear');

SQL.Add('(ymd, stgbn, stcode, stsize, acnt, aunitamt, aamt,');

SQL.Add('bcnt, bunitamt, bamt, abcnt, abunitamt, abamt, jobymd)');

SQL.Add('select ymd, stgbn, stcode, stsize, acnt, aunitamt, aamt,');

SQL.Add('bcnt, bunitamt, bamt, abcnt, trunc(abamt/abcnt) abunitamt, abamt, jobymd');

SQL.Add('from(select ymd, stgbn, stcode, stsize, acnt, trunc(aamt/acnt) aunitamt, aamt,');

SQL.Add('bcnt, trunc(bamt/bcnt) bunitamt, bamt, nvl(acnt,0)-nvl(bcnt,0) abcnt,');

SQL.Add('nvl(aamt,0)-nvl(bamt,0) abamt, jobymd');

SQL.Add('from(select substr(ymd,1,4) ymd, stgbn, stcode, stsize,');

SQL.Add(' sum(decode(iogbn,''i'',cnt)) acnt,');

SQL.Add(' sum(decode(iogbn,''i'',amt)) aamt,');

SQL.Add(' sum(decode(iogbn,''o'',cnt)) bcnt,');

SQL.Add(' sum(decode(iogbn,''o'',amt)) bamt,');

SQL.Add(' substr(to_char(sysdate,''yyyymmdd''),1,8) jobymd');

SQL.Add('from io');

SQL.Add('where');

SQL.Add('substr(ymd,1,4) = :ymd');

SQL.Add('group by substr(ymd,1,4), stgbn, stcode, stsize))');

SQL.Add('where acnt <> 0');

SQL.Add('and bcnt <> 0');

SQL.Add('and abcnt <> 0');

Prepare;

ParamByname('ymd').AsString := YEAR_Edit.Text;

ExecSql;

end;

end;



1  COMMENTS
  • Profile
    이미나 2001.09.18 00:30
    프로퍼티 몇 개만 이용하면 쉽게 구현하실 수 있습니다.

    우선, gauge 이름을 gauProg 이라고 하죠.



    1.

    쿼리 select 하기 전에 일단 gauge의 maximun 값을 줍니다.

    gauProg.MaxValue := iCnt; // iCnt 값은 select한 레코드 카운트 개수.

    a := 0;



    2. select해온 값을 한 건씩 insert할 때에는 for문이나 while문을 사용할 것입니다.

    for문이나 while문 안에 이처럼 적어줍니다.

    a := a + 1; // insert하고 있는 건수를 count하는 변수.

    gauProg.Progress := a;

    Application.ProcessMessages; // gauge 값을 바로 화면에 반영...



    쉽죠? ^^

    도움말 참조하시면 다 나옵니다.^^