Q&A

  • [질문] 퀵리포트에서의 컬럼수 지정
퀵리포트를 공부중인대

퀵리포트에서는 db자료를 읽어 올때 데이터셋의 자료의 수에따라

한페이지의 컬럼의 수가 조절 되더군요

(예를 들어 자료의 수가 한페이지보다 못할때는 그냥 공백으로 처리)

퀵리포트 페이지에서의 자체적인 특정 컬럼수 지정은 안되더군요.

그래서 아래와 같인 DB를 이용해서 null값을 주면서 데이터의 수가 특정 수(저의경우 15개)보다 안되면

나머지 값에는 dual를 이용해 null값을 대입하여 데이터의 수를 늘렸습니다.

예를 들어 자료가 10건인 것도 15건으로 퀵리포트가 인식을 해서 나머지에는 그냥 선만 출력되게

했습니다.

그런대 문제는 정렬까지는 되는대 유독 null값 (델파이에서는 ' ')을 갖고있는 값이 먼저 올라갑니다;;

그것도 한 데이터만

나머지 null데이터는 맨밑으로 알아서 차곡 차곡 정렬이 되는대요;;

왜 이런지 알고 싶고 이런 구시대적인 방법 말고 리포트의 컬럼수를 지정하는 방법 없을까요;;;?
<!--CodeS-->
procedure TForm1.Button2Click(Sender: TObject);
var
  temp : string;
  i,x : integer;
begin
  temp := ' SELECT S_SNUM, S_NAME FROM TESTER.STUDENT ';
  IF ADOQuery1.Recordset.RecordCount < 15 then
  begin
    x := ADOQuery1.Recordset.RecordCount;
    Form2.ADOQuery1.Close;
    Form2.ADOQuery1.SQL.Clear;
    for i := x to 14 do
    begin
      temp := temp+' UNION ALL SELECT NULL AS S_SNUM, NULL AS S_NAME FROM DUAL ';
    end;
  end
  else
  begin
    Form2.ADOQuery1.Close;
    Form2.ADOQuery1.SQL.Clear;
  end;
  temp := temp+' ORDER BY S_SNUM ';
  Form2.ADOQuery1.SQL.Add(temp);
  Form2.ADOQuery1.Open;
  Form2.QuickRep1.Prepare;
  Form2.QuickRep1.Preview;
end;

//퀵리포트의 코드
procedure TForm2.DetailBand1AfterPrint(Sender: TQRCustomBand;
  BandPrinted: Boolean);
begin
  if not(ADOQuery1.FieldValues['S_SNUM'] = null) then
  begin
    QRLabel2.Caption := ADOQuery1.FieldValues['S_SNUM'];
    QRLabel3.Caption := ADOQuery1.FieldValues['S_NAME'];
  end
  else
  begin
    QRLabel2.Caption := '';
    QRLabel3.Caption := '';
  end;
end;
<!--CodeE-->
1  COMMENTS
  • Profile
    동그랑땡 2010.12.26 07:57

    퀵리포트에 OnNeedData 이벤트가 있고, 거리에는 MoreData 라는 변수가 있어서

    그걸로 사용할 수 있습니다.

    근데 그걸로 하면 일반적인 DataSet의 필드를 QRDBLabel 에 필드 연결형식이 아닌

    QRLabel 에 그냥 코딩으로 값 지정하는 방식으로 합니다.

     

    • 파랑망토
      2011.01.05 02:23
      대략 이런식으로 하면 디렉토리 스트를 불러옵니다.조금 응용하면 하위폴더의 하위 폴더 리스트도 가져오는...
    • 구창민
      2011.01.05 05:27
      아래 코드는 디렉토리를 검색하여 파일을 찾는 예제입니다.원하시는 내용이 아래 코드에 모두 들어있습니다...
    • 델파이최고
      2011.01.06 19:22
      구창민님 로직과 비슷하게는 구현해봤는뎅~ 해결이 안되더군요 ㅠ.ㅠ;;; 파랑망토님 로직을 써보니~ 역시나...
    • 곽효근
      2011.01.06 22:22
      창민님께서 올린 소스중에 재귀적 호출을 한다 부분이 핵심입니다.하위 폴더 탐색할때 주로쓰는 방식인데 ...
    • 델파이최고
      2011.01.06 23:58
      백록화님 감사합니당..  
    • 백록화
      2011.01.07 00:02
      문법강조가 잘 안돼서 삽질 하고 있는데...그 새 보신 모양이군요 ㅋ 
    • 백록화
      2011.01.07 00:07
      function GetDirName(AList: TStrings; ABaseDirName: String): Integer;  var    pSR...
    • 이정욱
      2011.01.05 06:37
      보통은 USB를 직접 제어하는것이 아닙니다. 전통적인 델파이 방식으로 인쇄 하시면 됩니다.Uese 절에 ...
    • 파랑망토
      2011.01.05 18:25
      관심 갖아주셔서 감사합니다~ 기존에 시리얼포트나 패러럴 포트의 경우에는 직접제어를 했어서 ...
    • 이정욱
      2011.01.06 22:50
      아... USB를 직접 제어 하시려나 보군요.. 그러려면.. 각 프린터마다 다르게 되어있는 프로토콜들 때문에 ...
    • 파랑망토
      2011.01.07 22:27
      답변해주셔서 감사합니다.HID는 입력에 관련된 DEVICE 더군요.. 마우스 , 키보드 , 조이스특 등등..일단 프...
    • 백록화
      2011.01.04 02:43
      DbGrid류에는 RowCount가 없어요..(확장 DbGrid에도 있는게 드물껍니다.) 전체 행수를 알고 싶다는 연결된 ...
    • 스카페이스
      2011.01.04 02:55
      생초보입니다. TStringGrid로 타입캐스팅은 어떻게 해야 하나요?
    • 백록화
      2011.01.04 02:58
      TStringGrid(CRDbGrid1).RowCount; 
    • 스카페이스
      2011.01.04 03:09
      잘 읽어 오네요. 백록화님 이 고마움을 어떻게...
    • 백록화
      2011.01.03 20:11
      D7 에서는 DateUtils.pas 에 보시면 WeekOf 함수가 있습니다. 
    • 치꼬
      2010.12.31 22:13
      view > OptionsSelection > CellSelect 속성값을 True 로 하면 됩니다. 
    • 호리미
      2011.01.04 02:49
      보통 폼에 퀀텀그리드를 올려놓으면 기본적으로 OptionsSelection 속성값에 CellSelect가 True입니다. 현재...
    • 치꼬
      2011.01.04 04:09
      음..이상하군요. 혹시.. 디자인이 아닌 실행시 뭔가 설정이 되는건 아닐까요?
    • 델파이
      2010.12.30 14:41
      중국어를 입력하실 때 아래의 함수를 이용해보세요.   function URLEncode(const S: AnsiString): A...
    • 대리피스
      2010.12.31 02:57
      중국어는 웹에서 입력하고 그 입력값을 wideString 으로 받아오는 형식인데.. 그럼.. 위의 URLEncode 함수...
    • 이정욱
      2010.12.31 05:39
      받아오실때도 ansistring으로 받아오셔야 합니다. 단 UrlEncoding을 하신 후 받아오셔야겠죠.
    • 이정욱
      2010.12.29 08:50
      파일명 대신 폴더명을 주시면 되실텐데요? 파일이나 폴더나 다루는것은 같습니다.
    • 델파이최고
      2010.12.29 19:04
      ㅎㅎ 못가져오던데요 ㅋㅋㅋ 다시 한번 머리 쌈매봐야 겠네요  
    • 백록화
      2010.12.29 20:24
      정욱님 말씀대로 파일이나 디렉토리나 같이 다루는데..파일도 그렇지만 디렉토리명을 바꾸는것은 마지막수...
    • 델파이최고
      2010.12.30 20:13
      아 그럼~ 폴더 생성일자를 알아내면 되겠네요 ^^
    • 구창민
      2010.12.30 08:34
      백록님 열렙 하시네요.. 파티좀..
    • 이정욱
      2010.12.28 00:50
      AddressItem := AMsg.BccList.Add; AddressItem.Address := 'midmee@midmee.com'; <-수신확인?AddressIt...
    • 이정욱
      2010.12.28 04:46
      아래의 파일은 첨부파일을 어떻게 다루는지 나온 소스 입니다.   procedure TMailerForm.btnSendMai...
    • 델파이최고
      2010.12.28 06:54
      if FileExists(FileListBox1.Items.strings[0]) then      TIdAttachmentFile.C...
    • 이정욱
      2010.12.28 14:10
      {$APPTYPE CONSOLE}uses SysUtils, IdSMTP, IdAttachment, IdMessage, IdMessageParts, IdEMailAddres...
    • 델파이최고
      2010.12.28 23:40
      ㅎㅎ 소스를 보고 코딩해서~ 보내봐도~ 역시나 This is a multi-part message in MIME format --L1lHvf=_p...
    • 델파이최고
      2010.12.29 01:48
      감사합니당 ^^
    • 순수시대
      2011.03.05 02:58
      혹시 메일 View(다음메일...)가 혹시 아웃룩인가요 ??? (죄송 궁금해서요)
    • 이정욱
      2010.12.28 00:09
      질문 내용만 보고는 뭐라고 말씀드리기가 어렵습니다...ㅡㅡ;;;   그 부분의 소스를 보여주셔야 문제...
    • 이정욱
      2010.12.27 01:34
      인디는 무료입니다... 오픈소스 프로젝트 입니다.......제가 드린 링크에 가시면 문서자료도 많습니다. 한...
    • 델파이최고
      2010.12.27 17:57
      이것 저것 다 해 보아도~ 통~~ 답이 안나와서요~ ㅎㅎㅎ 이번에는 답 나와야 하는뎅 ㅋㅋ
    • 이정욱
      2010.12.26 23:18
      http://www.delphi.co.kr/?mid=downloads&search_target=title&search_keyword=smtp&document_...
    • 이정욱
      2010.12.26 23:22
      또한 말씀하신데로 검색을 해보니.. http://www.ararat.cz/synapse/doku.php/public:howto:smtpsend ...
    • 델파이최고
      2010.12.26 23:32
      첨부파일 참조 부탁드립니다. 에러가 나는 부분은 컴포넌트 버젼이 틀리다고 나오는뎅 ㅋㅋ 델7에서 인디1...
    • 이정욱
      2010.12.26 23:47
      인디 설치가 제데로 안된것 입니다.. 과거의 인디를 지우시고, Search Path에서도 지워주셔야 합니다. ...
    • 델파이최고
      2010.12.27 00:14
      아무리 지우고 다실 깔아도 똑같네요~ ㅠ.ㅠ; 인스톨팩케지로만 파일을 가지고 있어서요~ 소스로 컴파일은 ...
    • 이정욱
      2010.12.27 00:22
      http://www.indyproject.org/Sockets/Docs/index.EN.aspx 가시면 있습니다..
    • 델파이최고
      2010.12.27 01:02
      ㅎㅎ 가보니~ 유료내요 ㅋㅋ ㅠ.ㅠ;  
    • • • •
    • 이정욱
      2010.12.26 20:58
      Uses 절에 IdEMailAddress 를 추가해주셔야 합니다...
    • 델파이최고
      2010.12.26 21:12
      매번감사합니다. 하지만 아직도 useTLS 속성을 못 찾았습니다. ㅠ.ㅠ
    • 이정욱
      2010.12.26 22:10
      제 생각에는 아직 인디가 과거 버전이 동작하고 있지 않나..라고 예상이 됩니다. 과거 버전의 인디를 삭제 ...
    • 델파이최고
      2010.12.26 22:13
      과거 인디 삭제 되었습니다. 왜냐면~ 아이콘이 처음과 이번꺼라 바뀌었거덩요ㅋㅋㅋ 팩케지 에서 삭제하고 ...
    • 델파이최고
      2010.12.26 22:18
      혹시 몰라서 그러는뎅 인디 파일 이것 맞나요
    • 이정욱
      2010.12.25 22:05
      var  AMsg : TidMessage;  AddressItem : TidEmailAddressItem;begin  AMsg...
    • 델파이최고
      2010.12.26 02:31
      감사합니다. 궁금한점 있으면 다시 한번 조언 부탁 드릴께요 ^^
    • 델파이최고
      2010.12.26 02:34
      이상하네요~~ idsmtp 컴포넌트에 UseTLS속성이 없는뎅! 어디에 있는지요?
    • 델파이최고
      2010.12.26 02:41
      제가 아직 미흡 하여 AddressItem : TidEmailAddressItem; 안된다는뎅 ㅠ.ㅠ;  
    • 델파이최고
      2010.12.26 02:46
      AMsg.Body.LoadFromFile(ExtractFilePath(Application.ExeName)+'\RegMail.txt'); 본문을 텍스트로 뿌려주...
    • 이정욱
      2010.12.26 08:26
      인디 최신 버전을 사용해보세요...
    • 델파이최고
      2010.12.26 17:32
      인디 최신은 델파이에서 받을수 있나요? 제가 쓰고 있는것 델7 인데요
    • 이정욱
      2010.12.25 22:07
      1번의 질문은 조금 더 자세한 내용이 필요 합니다.혹시 Drag and Drop 기능을 말씀하신것이라면 TreeView D...
    • 임정현
    • 2010.12.22 01:53
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 동그랑땡
      2010.12.26 07:57
      퀵리포트에 OnNeedData 이벤트가 있고, 거리에는 MoreData 라는 변수가 있어서 그걸로 사용할 수 있습니다...
    • 정경철
    • 2010.12.21 02:46
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      2010.12.25 22:08
      델파이에 내장된 TeeChart 가 현재 델파이에서는 가장 많이 쓰이고 있습니다.기능이 많은것은 TeeChart Pro...
    • 이정욱
      2010.12.25 22:11
      델파이 2010에서 XE로의 업그레이드는 많은 분들께서 그냥 그렇다고 하십니다.하지만 델파이 7에서 XE로의 ...
    • 아르스
      2010.12.19 22:38
      쿼리를 쓸때 알리아스를 지정해 주셔야 할듯 합니다. Select Sum(Field_Childrncount) as cnt From ta...
    • 이민상
      2010.12.20 02:55
      아르스님 감사
    • 이민상
      2010.12.20 02:58
      혹 FieldByName()이 아닌 ParamByName()은 쿼리에서 변수선언을 아떻게 해야 하나요?
    • 아르스
      2010.12.20 21:13
      FiledByName이랑 ParamByName이랑은 쓰임새가 다릅니다. FieldByName은 일반적으로 해당 테이블의 해...
    • 최용일
      2010.12.18 08:30
      TTimer에 메모리릭이 있었나요? 들어본적이 없는것 같은데요... ThreadTimer에 Enabled필드를 만들고 ...
    • suffering tears
      2010.12.18 08:39
      저도 최용일님말씀처럼 코딩해봤지만, TThreadTimer의 OnTimer에 루프명령을 코딩하고 해봤지만, 잘 안되...