Q&A

  • 퀵레포트의 필드 관련 문제 입니다.
글을 찾아봐도 제 질문은 너무 쉬운것인지..



글이 올라와 있는게 없어서 이렇게 질문 합니다



퀵레포트로 5개의 레코드를 찍었는데 계속 마지막것만 출력이 됩니다,



왜 그러는 건지....



정말 모르겠습니다.



몇번 글을 올렸는데 알려주신 방법은 다 제가 해놓은 것 입니다.

db 연결은 잘~~되어 있습니다.



꼭 답변 부탁 드립니다.



누군가가 auto create form 으로 되어 있으면 그렇게 된다고 하던데...

그래서 바꿨는데두 똑같네요...



항상 행복하세요







4  COMMENTS
  • Profile
    황하성 2001.07.18 01:39
    해결을 하셨을런지도 모르겠군요.



    저도 동일한 문제에 부딪혔다가 해결했습니다.



    제가 해결한 것은 DetailBand에 QRDBText들을 다시 올리니까 되더라구요.



    기존에는 QR_Data에 QRDBText들을 올려두고는 DetailBand에서 Send to Back을 써서



    마치 DetailBand 위에 아이템에 올려진 것처럼 해서 사용했더니



    마지막 레코드만 찍히더라구요.



    어째어째하다보니 Send to Back을 하지 않고 썼더니 화면 뒤쪽으로 데이타가 찍히는



    것을 확인하고는 DetailBand 위에 다시 QRDBText 아이템들을 재정렬해서 사용했더니



    이젠 정상적으로 찍히는 군요.



    작업 순서의 이상이었던 같습니다.



    먼저 DetailBand를 놓고 그 위에 QRDBText를 올려놓고 사용하면 이상이 없이 작업이



    수행된다는 걸 오늘에야 알게 되었습니다.



    도움이 되기를 바라면서 이만... 너무 늦었나... ^^;

  • Profile
    하기 2001.07.06 20:04
    참고가 될지는 모르겠군요...

    우선 QuickRep.DataSet이 연결이 되어있어야 하고요..

    그리고 QuickRep의 DBEdit들이 DataSet/DataField가 연결되어있어야 하고요.

    왜 5개의 Record를 찍었는지는 모르겠지만(자료가 5건인가?)

    QuickReport를 찍기 전에 연결된 DataSet(Query/Table)의 Point가 First를

    가르켜야 하고요. 하나 더 있군요...Record를 찍기위해서 올려놓은 DBEdit들이 DetailBand에 위치해 있어야 하고요... 또... 일단은 이정도 군요

    모든것이 연결되어있고 그래도 안된다면

    QuickReport를 찍기 위한 QuickReport의 Create부분에 Table/Query를 First시켜

    보세요. 자세한 상황은 몰라서리..

    그럼. ^^;







    인어공주 wrote:

    > 글을 찾아봐도 제 질문은 너무 쉬운것인지..

    >

    > 글이 올라와 있는게 없어서 이렇게 질문 합니다

    >

    > 퀵레포트로 5개의 레코드를 찍었는데 계속 마지막것만 출력이 됩니다,

    >

    > 왜 그러는 건지....

    >

    > 정말 모르겠습니다.

    >

    > 몇번 글을 올렸는데 알려주신 방법은 다 제가 해놓은 것 입니다.

    > db 연결은 잘~~되어 있습니다.

    >

    > 꼭 답변 부탁 드립니다.

    >

    > 누군가가 auto create form 으로 되어 있으면 그렇게 된다고 하던데...

    > 그래서 바꿨는데두 똑같네요...

    >

    > 항상 행복하세요

    >

    >

    >

  • Profile
    인어공주 2001.07.06 20:23
    답변 감사 합니다.

    하지만 님이 알켜준 방법은 모두 셋팅 되어 있습니다



    혹시 다른 이유가 아닌가 싶은데..도저히 모르겠습니다.



    혹시나 해서 소스 한번 올리겠습니다.





    procedure TForm4.FormShow(Sender: TObject);

    var L_start,Str : string;

    begin

    L_start := unit1.L_start ;

    with Query1 do

    begin

    close;

    SQL.Clear ;

    Str := '';

    Str := 'select S.sub_name sub_name,count(C.duration) duration ';

    Str := Str + 'from cdr_bill C,subscriber S ' ;

    Str := Str + 'where C.workdt >= '''+L_start+''' ';

    Str := Str + 'and S.sub_id = C.sub_id ' ;

    Str := Str + 'group by S.sub_name ' ;

    SQL.Add (Str);

    prepare;

    open;



    if RecordCount > 0 then

    First ;



    QuickRep1.Preview ;



    edit1.Text := Str;

    //QuickRep1.Preview ;

    //QuickRep1.Free;



    end;



    end;



  • Profile
    하기 2001.07.06 21:02
    아마도 Query문에 5개의 Record가 들어오는지를 먼저 확인 해 보셔야 할것

    같군요...

    그리고 Unit1 => 이게 레포트 폼을 부르는것인가?

    L_start := unit1.L_start ;에서 L_start값이 제대로 들어오는지

    그리고 SQL.Add (Str);이건 눈씻고 찾아 봐도 Str의 값이 들어가는것이

    없는것 같군요.. ^^;

    일단 SQL Explorer를 사용하여 Query의 값을 확인해 보세요..

    그리고 참고로

    TForm4.FormShow 이부분에 QuickRep1.Preview 이게 들어가 있네요

    만일 어느 폼에서 버튼을 눌렀을때 QuickRep가있는 폼이 실행된다면

    레포트가 출력된다고 해도 디자인시의 레포트폼이 하나 더 나오겠군요..

    그걸 조금 바꾸어 사용하심이 좋을것 같네요..

    예를 들어

    Application.CreateForm(TForm4,Form4);

    Form4.QuickRep1.Preview; (Form4.QuickRep1.PreviewModal;)

    이런식으로요...

    그리고 QuerySelect부분은 레포트폼의 Create부분에 넣어 주심 되고요...

    명쾌한 답을 못드려 죄송 합니다... ^^;







    인어공주 wrote:

    > 답변 감사 합니다.

    > 하지만 님이 알켜준 방법은 모두 셋팅 되어 있습니다

    >

    > 혹시 다른 이유가 아닌가 싶은데..도저히 모르겠습니다.

    >

    > 혹시나 해서 소스 한번 올리겠습니다.

    >

    >

    > procedure TForm4.FormShow(Sender: TObject);

    > var L_start,Str : string;

    > begin

    > L_start := unit1.L_start ;

    > with Query1 do

    > begin

    > close;

    > SQL.Clear ;

    > Str := '';

    > Str := 'select S.sub_name sub_name,count(C.duration) duration ';

    > Str := Str + 'from cdr_bill C,subscriber S ' ;

    > Str := Str + 'where C.workdt >= '''+L_start+''' ';

    > Str := Str + 'and S.sub_id = C.sub_id ' ;

    > Str := Str + 'group by S.sub_name ' ;

    > SQL.Add (Str);

    > prepare;

    > open;

    >

    > if RecordCount > 0 then

    > First ;

    >

    > QuickRep1.Preview ;

    >

    > edit1.Text := Str;

    > //QuickRep1.Preview ;

    > //QuickRep1.Free;

    >

    > end;

    >

    > end;

    >