Q&A

  • db조회시 진행바 만들려고 합니다
db에서 데이타 조회시

조회되는 상태를 퍼센트형식으로 보여 주고싶습니다

즉 진행바를 만들어 데이타가 어디까지 조회되었는지

를 사용자에게 보여주고 싶은데 어떻게 구현하면

되는지 가르쳐 주십시요.......

2  COMMENTS
  • Profile
    박성훈 2000.01.02 23:49
    최수영 wrote:

    > db에서 데이타 조회시

    > 조회되는 상태를 퍼센트형식으로 보여 주고싶습니다

    > 즉 진행바를 만들어 데이타가 어디까지 조회되었는지

    > 를 사용자에게 보여주고 싶은데 어떻게 구현하면

    > 되는지 가르쳐 주십시요.......



    Rx Library에 DBProgrees라는 컴포넌트가 있더군요. 저도 아직 안써봐서 잘 모르겠습니다만 원하시는 것도 구현할 수 있을 것 같아 답변올렸습니다. 소스가 공개되어 있고 도움말도 있으니까 자료실에서 찾아서 한번 살펴보시죠.





  • Profile
    이재식 2000.01.02 22:48
    최수영 wrote:

    > db에서 데이타 조회시

    > 조회되는 상태를 퍼센트형식으로 보여 주고싶습니다

    > 즉 진행바를 만들어 데이타가 어디까지 조회되었는지

    > 를 사용자에게 보여주고 싶은데 어떻게 구현하면

    > 되는지 가르쳐 주십시요.......



    이재식 Wrote :

    안녕하세요?



    제가 일전에 그런 숙제를 받은적이 있었습니다.

    서버로 할때는 무척 편합니다.

    우선 DBA가 이 방법을 잘 알고 있습니다.

    즉, 서버디비를 쓰시면 해당 쿼리에대한 시간을 ms or ns로

    받아 볼 수 있습니다.

    즉, 시간을 적당히 쪼개서 보여주면 되죠.

    혹 서버디비를 쓰시면 DBA에게 한번 여쭈어 보세요.

    쿼리에대한 시간을 체크해서 어떻게 넘겨받을 수 있는지...



    좀 더 쉽게 하는 방법은 C언어처럼 CPU시간을 읽을 수 있는

    함수가 있으면 좋다는 것이죠.

    제가 아직 델파이에서 CPU을 clocking해주는 함수를 몰라서

    아쉽네요. 쩝~~

    BDE어딘가에 그런 함수가 있을 것 같은데...



    그런데 또 제가 일전에 패러독스를 쓸때 이런일을 해본적이 있는데요,

    한참 공부 초창기때 작성했던 것입니다.

    매우 허술합니다.

    그저 약간의 참조만이라도 되었으면 하는 마음으로

    이렇게 부족하나마 씁니다.



    progressbar1.position := 0;

    progressBar1.step := ProgressBar1.Max div 1000 ;



    with query1 do

    begin

    close ;

    sql.clear ;

    sql.add('select *') ;

    sql.add('from test') ;



    open ;

    end ;



    while Not query1.Eof do

    begin

    query1.MoveBy(1) ;

    if (progressBar1.Position < progressBar1.Max) then

    begin

    progressBar1.step := ProgressBar1.Max div 1000 ;

    progressBar1.StepIt ;

    end ;

    end ;



    while (progressBar1.Position < progressBar1.Max) do

    begin

    progressBar1.step := ProgressBar1.Max div 1000 ;

    progressBar1.StepIt ;

    end ;

    query1.first ;



    이건데요,

    우선 폼위에 progressBar컴포넌트를 올려놓으시고 하면 됩니다.

    여기서 적당히 prog컴포넌트의 Max값을 적절히 설정하시고요,

    위에 보면 progressbar1.max div "숫자"가 있죠?

    이 "숫자"를 적당히 변경하면 마치 진행되는 것처럼

    보이기도 합니다. 쩝~~.

    제가 옛날에 해보니까 건수가 많을수록 좀 더 실감히 나더군요.

    얼핏보기에는 쿼리가 다 끝나서야 진행이 되는 것 같지만

    사실 밑에 또 while문으로 moveby를 하기때문에

    시각적으론 그리 티나지 않습니다.

    참, moveby함수에서도 건수에 따라 이동값을 주면

    또 그나마 괜찮은 진행률이 시각적으로 나오더라구요.



    미안합니다.

    사실, 코딩을 좀 많이 단순화 시켰습니다.

    왜냐면, 옛날에 좀 무대포로 작성을 한 것이라...



    별로 도움이 안되는 말씀을 드려서 죄송합니다.