Q&A

  • 퀵리포트에 공백열 질문입니다.


날씨 무쟈게 좋았던 일요일이었습니다 ^^;
이 좋은 날 집에서 일하고 있다니..
암튼 그림과 같이 리포트에 데이터가 나오구요 나머지 부분에 데이터가 없어도
그림처럼 공백으로 남겨 두려고 합니다.
그러니까 리포트에 라인이 10줄 정도 있고 데이터가 2개든 3개든
10개의 라인을 표시해 주고 싶거든요..
제가 리포트는 처음이라 예제보고 데이터를 보여주긴 했는데 여긴 도저히
모르겠습니다.
간단한 예제라고 만들어서 오려주시면 정말 고맙겠습니다.
4  COMMENTS
  • Profile
    이정관 2004.11.15 19:33
    예전에 퀵레포트 했던 경험으로는 이런 경우에 대해서 두가지 방법이 있었던것 같네요.
    첫번째는 Query에 subdetail band를 사용한 경우 query 의해서 결정이 납니다.
    결과의 recordcount를 먼저 구합니다. 즉 20라인씩 나와야한다면 mod를 사용해서 더 필요한 라인 수를 구합니다. recordcount가 3이라면 17라인이 더 나와야 겠죠.
    select name from students where~
    (+union Select '9999' from 가장간단한테이블 ) 17번 반복->한 row가 나오게

    이 전체를 query로 날리면 됩니다. 레포트로 표시할때는 '9999'인경우는 공백으로 표시하죠.

    두번째 방법은 레포트 페이지가 끝날 때의 event가 있을 겁니다. 이 이벤트에서 라인수를 체크해서 공백만 있는 밴드를 필요한 만큼 반복해서 출력하면 됩니다. 공백만 있는 밴드를 만들어서 처음에서 보이지 않게 했다가 끝페이지에 대해서 보이게 하고 필요한 라인수 만큼 보이게 하는 방법입니다.

    전 델파이7이라 quickReport를 찾을 수가 없네요. 간단한 예제를 보여드리지
    못하겠네요...
  • Profile
    이정관 2004.11.15 20:38
    두번째방법의 소스입니다.
  • Profile
    노명환 2004.11.15 22:59
    답변 고맙습니다.
    그런데 첨부하신 예제 프로그램에서 페이지 수가 무한정 늘어나 버리는데요.
    뭐가 잘 못 된거지 ^^;
  • Profile
    이정관 2004.11.16 01:00

    MsSQL2000서버의 Northwind의 Orders테이블을 연결해서 사용한 겁니다.
    TDataBase와 TQuery를 수정해서 해보세요...
    제쪽에선 정상적으로 13페이지가 나온다면 빈 라인은 빈칸으로 채우고 있습니다.
    SubDetailBand를 출력한 다음 각 페이지 당 남은 라인수를 체크하기 위한 변수를 잘 지정해주시고 빈라인를 출력하기 위한 밴드의 needData이벤트에서
    더 출력해야할 라인 수 만큼 지정해 주심될 거예요



    QRSubDetail2 -> 빈라인을 출력할 밴드
    QRSubDetail1 -> 데이터 출력 밴드 임.

    procedure TForm1.QRSubDetail2NeedData(Sender: TObject;
      var MoreData: Boolean);
    begin
       if lCount = 0 then  -> 여기서 lCount가 더 출력해야할 라인수 입니다.
         begin
            moreData := fAlse;
         end
       else
         begin
            MoreDAta := true;
            dec(lCount);
       end;
    end;

    procedure TForm1.QRSubDetail1AfterPrint(Sender: TQRCustomBand;
      BandPrinted: Boolean);
    begin
       inc(rCount);   -> rCount는 출력한 라인 수
       dec(lcount);   -> 더 출력해야할 라인수
       if rCount > 20 then  -> 페이지당 라인 수
         begin
           rCount := 0;
           lCount := 20;
           QuickRep1.NewPage;
       end;
    end;

    • 석주현
      2004.11.16 18:08
      그냥 Edit 와 updown VCL 을 이용해서 코딩을 해줘야 할거 같네요. Edit에서 커서 위치에 따라서 시간 분 ...
    • 김종균
      2004.11.17 06:14
      SpinEdit에서 커서위치를 어떻게 아는지요... 예제 있으면 올려
    • 양기태
    • 2004.11.16 06:16
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이두형
      2004.11.16 08:11
      제 생각엔 배열에 랜덤하게 직접 이미지를 넣는 방법보다, (근데 위 방법으로 랜덥하게 이미지를 선택해야...
    • 하얀까마귀
      2004.11.16 23:24
      안녕하세요 하얀까마귀 입니다. 아주 오래전 도스에서 png포맷으로 프로그램을 만든 기억이 ㅎㅎㅎ ...
    • 최성욱
    • 2004.11.16 01:47
    • 4 COMMENTS
    • /
    • 0 LIKES
    • id0313
      2005.05.20 18:25
      늦게나마 답변.. 한동안 아무 생각없이 String에 255개 이상의 문자를 대입하면 에러가 난다고 알고서 코...
    • 신동호
      2004.11.17 07:07
      sql문 자체가 TStringList 객체로 되어 있습니다. 그러므로 sql문은 한개의 Text 화일이라고 볼 수 있습니...
    • 한원희
      2004.11.16 05:12
      안녕하세요. 한원희입니다. 쿼리의 길이는 상관이 없는 것으로 알고 있습니다. 제가 여태까지 ADO를 사...
    • 모영철
      2004.11.16 03:45
      전에 1000줄 정도 되는 쿼리를 ADO가 아닌 BDE를 이용해서 날리는데요.. 정확히 몇글자 인지 모르겠지만...
    • 이정관
      2004.11.16 01:08
      uses절에 ComCtrls넣어주세요.
    • 최수림
      2004.11.16 01:09
    • 우용우
    • 2004.11.15 23:44
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2004.11.17 22:08
      안녕하세요. 최용일입니다. 아는 방법은 없을거 같은데요... 소켓을 오픈한다고 해도 공유기로 데이...
    • 정정봉
      2004.11.16 17:31
      처음 에러는 쿼리문장이 잘못 코딩이 된것 같구요. 두번째 에러는 Key값 중복 발생 에러 인것 같네요.
    • 델피언
    • 2004.11.15 21:33
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 한원희
      2004.11.16 05:15
      안녕하세요. 한원희입니다. 아마도 IF 문 다음에 BEGIN ... END를 하지 않아서 그런것이 아닐까요??? ...
    • 김종균
    • 2004.11.15 20:50
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 이정관
      2004.11.15 21:30
      showhint를 true로 하셨나요? 툴바에 버튼 등을 추가했다면 툴바의 힌트와 툴버튼의 힌트를 따로 지정해...
    • 김종균
      2004.11.15 21:40
      showhint는 ture입니다. 델파이7을 다시 설치했는데 그러네요
    • 이정관
      2004.11.16 18:39
      델파이를 새로 설치해도 그런다면 대체로 난감ㅡㅡ;;
    • 이정관
      2004.11.15 21:22
      if Pan_ProjectCode1.Caption = ''  then -> String문자가 아무것도 없을때   &...
    • 김정현
      2004.11.15 21:52
      제가 올려놓은 원문을 보면 SELECT  ProjectCode,KorProjectName  이문장을 SQL 에 ...
    • 이정관
      2004.11.15 22:18
      gsProjectCodeTable은 String변수입니다. 즉 변수라서 지정하가 나름이죠. 그리고 LIKE ''' + '%' + Edt_K...
    • 김정현
      2004.11.15 23:02
    • nilriri™
      2004.11.16 22:05
      무슨 작업을 하시려고 그러시는지 모르겠네요..^^; 디비 그리드에 서로 다른 테이블의 내용을 사용자 선...
    • 이두형
    • 2004.11.15 11:23
    • 7 COMMENTS
    • /
    • 0 LIKES
    • 한원희
      2004.11.15 19:34
    • 이정관
      2004.11.15 18:55
    • 이두형
      2004.11.16 08:34
    • 이정관
      2004.11.16 18:33
    • 이두형
      2004.11.16 22:09
    • 이정관
      2004.11.16 22:32
    • 이두형
      2004.11.17 01:35
    • 노명환
    • 2004.11.15 10:31
    • 4 COMMENTS
    • /
    • 2 LIKES
    • 이정관
      2004.11.15 19:33
      예전에 퀵레포트 했던 경험으로는 이런 경우에 대해서 두가지 방법이 있었던것 같네요. 첫번째는 Query에 ...
    • 이정관
      2004.11.15 20:38
      두번째방법의 소스입니다.
    • 노명환
      2004.11.15 22:59
      답변 고맙습니다. 그런데 첨부하신 예제 프로그램에서 페이지 수가 무한정 늘어나 버리는데요. 뭐가 잘 ...
    • 이정관
      2004.11.16 01:00
      MsSQL2000서버의 Northwind의 Orders테이블을 연결해서 사용한 겁니다. TDataBase와 TQuery를 수정해서 ...
    • 김정현
      2004.11.15 18:33
      딱히 답변은 아니구요...^^ 예를 들어 환경설정 파일같은거나 게임환경정보를 저장해놓은....그런거... ...
    • nilriri™
      2004.11.15 21:57
      Self가 QReport라면.. 여기에서 구한 m이 필드명이 나온다면.. m:= tqrdbtext(components[i]).Caption;...
    • 가딘
      2004.11.16 20:14
      답변 감사하구요 문제는 디테일 밴드의 출력된 모든 값을 가지고와서 엑셀로 저장을 할려고 합니다. 쿼...
    • 구자균
      2005.02.03 19:22
      프린터를 일단 공유를 시켜요.영수증프린터는 삼보 570으로 잡고 공유시켜요. 다른 피시에서 네트웍공유...
    • 하얀까마귀
      2004.11.19 19:39
      안녕하세요 하얀까마귀 입니다. 먼저 LTP1이란 이름은 포트명이므로 이 이름은 쓸수 없습니다. 당...