Q&A

  • TPrint로 출력하는데 에러가 나요...
안녕하세요~~
저희 회사에서는 한달에 두번 약 만여명의 회원에게 우편물을 발송하고 있습니다.
우편물 발송을 위한 봉투를 출력하려고 하는데 퀵리포트로 했더니
100장을 채 출력하지 못하고 에러가 나버렸습니다.
아무런 에러도 없는데 말이죠... -.-;;

여러가지로 해보다가 안되서 양병규님께서 글을 올리신 TPrinter를
따라서 만들어 보았습니다.
아래 보이는게 그 소스구요...

처음 몇번은 잘 되는데 하다가보면~ 프린트가 안되구 프린트 출력내용을 보면
컴퓨터가 프린트 할 것을 삭제하고 있더라구요....
다시 컴퓨터를 껐다가 켜면 다시 되구요~
그렇게 또 몇번 하다보면~ Spool Error이라는게 떠요...

아래 소스는 데이터를 가져온 다음 인쇄를 시작하고 닫고 다시 데이터를 가져오도록 되어있어요
인쇄 시작을 알리고 데이터를 가져와서 인쇄하고 다시 데이터를 가지고 오려고 하니까
한번만 출력하고 서 버리구요...

고수님들~~ 이거~~ 어떻게 해야하는지 좀~ 알려주시겠어요?

  with DM.qMLable do
  begin
    while Not Eof do
    begin
      // 데이터 가져오기
      // 주소
      Address := FieldByName('Sido').AsString+' '+FieldByName('Gugun').AsString+' '+
                 FieldByName('Dong').AsString+' '+FieldByName('Note').AsString;
      // 이름
      if FieldByName('MagazineCd').AsString = '900' then
        Tmp := ' 귀하('+FieldByName('Memo').AsString+')'
      else
        Tmp := ' 귀하';
      if FieldByName('dvsn').AsString = '1' then
      begin
        if copy(FieldByName('Position_$chrp').AsString,1,1) <> '1' then
          MemberNm := FieldByName('Name').AsString+Tmp
        else
          MemberNm := FieldByName('Name').AsString+FieldByName('ChrpNm').AsString+Tmp;
      end
      else MemberNm := FieldByName('Name').AsString+Tmp;
  // 인쇄 시작
     Printer.BeginDoc;
      with Printer.Canvas do
      begin
        //현재 매핑모드를 oldMap에 저장하고 새로운 매핑모드(0.1mm)를 적용한다
        OldMap := SetMapMode( Printer.Handle, MM_LOMETRIC );
        //현재의 기준점을 OldOrg에 저장하고 새로운 기준점(20mm)을 적용한다
         OldOrg := SetOrgPoint( Point( 100, 150 ) );
        try
          Brush.Style := bsClear;
          Font.Name := '굴림';
          case rgWay.ItemIndex of
           0:begin     // 큰 봉투
              Len := 1400;
              Wid := -1200;
              Font.Height := 45;
              Step := -100;
             end;
           1:begin     // 작은봉투
              Len := 900;
              Wid := -600;
              Font.Height := 32;
              Step := -80;
             end;
          end;


          TextOutBase(Len, Wid, Address);
          Inc(Wid, Step);

          TextOutBase(Len, Wid, MemberNm);

          Inc(Wid, Step);
          Inc(Len, 400);
          case rgWay.ItemIndex of
            0:Font.Height := 53;  // 큰 봉투(우편번호)
            1:Font.Height := 43;  // 작은봉투(우편번호)
          end;

          TextOutBase(Len, Wid, FieldByName('PostNo').AsString);

          Next;
        Finally
         //기준점을 원래대로 복구한다
          SetOrgPoint( Point( OldOrg.cx, OldOrg.cy ) );

         //매핑모드를 원래대로 복구한다
          SetMapMode( Printer.Handle, OldMap );
          Printer.EndDoc;
        end;
      end;
    end;
  end;

0  COMMENTS
    • 정통
    • 2003.07.25 04:47
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 정영주
    • 2003.07.25 04:44
    • 1 COMMENTS
    • /
    • 0 LIKES
    • major
      2003.07.25 05:16
      안녕하세요.. 정확히 기억이 나지는 않지만 예전에 이렇게 썼던걸로 기억하는데요.. Tdatetime(=...
    • 남현숙
    • 2003.07.25 04:33
    • 1 COMMENTS
    • /
    • 0 LIKES
    • Goni
      2003.07.25 10:22
      폼에 스크롤바가 생긴다는 말씀이면 폼의속성중에서  vertscrollbar 의 + 를 클릭하시면 세부 ...
    • 김성열
    • 2003.07.24 23:44
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 오은경
    • 2003.07.24 23:29
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 이정광
      2003.07.25 04:54
    • Goni
      2003.07.25 11:02
      제가 자주가는사이트인데 여기에 가시면 님이 궁금해하시는 내용이 있을겁니다.     ...
    • 유민호
    • 2003.07.24 20:18
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 타락천사
      2003.07.29 02:02
      안녕하세요. 타락임다. 발상의 전환이 필요하죠. 다른 컴에선 안되는데 님의 컴에선 잘 되면 님 컴...
    • 바보감자
      2003.07.25 04:14
      안녕하세요 언제나 초보 바보감자입니다.. 데이타 소스가 없어도 됩니다. 그럼 다른분이 답변 한것처럼 ...
    • 열심히
      2003.07.25 07:25
      그렇겠져?? 헬프에보면 데이터셋은 그냥 데이터 셋일뿐이니 그걸 디스플래이 해주고 조작 할수 있는 ...
    • KDDG_Hit
      2003.07.25 20:38
      흠.. DataSource가 데이타셋의 상태를 점검하는 일도 하고 있었군요.. 그렇다면 님 말씀이 맞는듯하네요...
    • KDDG_RNStone
      2003.07.25 00:03
      Table1 세팅 다 하시고 Active := True; 하시고 일단 DataSource1의 DataSet에 Table1연결하시고... ...
    • KDDG_Hit
      2003.07.25 02:15
      스톤님 말씀처럼 Table1과 DBGrid를 연결하는 역활을 DataSource가 하고 있죠. 그런데 Table1이 직접 DB...
    • KDDG_RNStone
      2003.07.25 04:37
      DataSource 없이 연결이 된다구요? 전 모르는 일인데... 그게 정말 가능한가요? 아니죠? 걍 DataSource...
    • 연기훈
      2003.07.25 02:21
      그건.. 중간에 데이터를 제어해주기 위해서가 아닐까 생각해봤는데... 이런 질문이 올라오니. 한번쯤 생...
    • 진요한
    • 2003.07.24 14:11
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 김동화
    • 2003.07.24 08:04
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 연기훈
      2003.07.25 02:17
      BDE 메모리 에러 입니다. 메모리에 BDE를 올릴수 있는 용량 초과나, 충돌로 인한 것이니.. koreadelphi...
    • 방재웅
      2003.07.24 21:25
      BDE 엔진 에러네요. BDE부분 검토하세요.
    • 별볼일없는
      2003.07.24 21:17
      [conpon...] [install pack...] add 하시고 ...delphi7bin 폴더에 보시면   dclqrt70....
    • 행복용달^-^*
      2003.07.24 18:33
      사용 가능합니닷
    • 정경철
      2003.07.24 03:50
      이렇게 한번 해보십시오. WinExec(Pchar(star),SW_SHOWNORMAL); 제가 알고 있기로는 API 함수는 C 문...
    • major
      2003.07.24 03:47
      안녕하세요... 오늘은 쫌 한가해서 여러번 글을 올리네요..^^;; 변수 star : PChar; 로 하시고요.....
    • 처음느낌그대로
      2003.07.24 04:05
      아... 되네요... 감사합니다.
    • 송정철
      2003.07.24 04:48
      겹쳐진 부분을  rect로 영역을 잡으시고 그곳에 다른 무언가를 두시면 되겠군요..예를들면 s...
    • major
      2003.07.24 03:50
      허허허 이거 컴포넌트에 보시면 Send to back 이라든가 Bring to Front 를 하시면 될 것 같은데요..^^;...
    • 아리엘
      2003.07.24 03:11
      아마도 Shape.Shape:=qrsRectangle; 이 걸 정의 안해줘서 6이하일경우 라인으로 표시됬나봅니다.. ...
    • 이돈결
    • 2003.07.24 00:08
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 한만교
      2003.07.27 15:49
      이런경우는 뭔가 노이즈에 의해 실제 데이터의 값이 변화하는 경우이거나 아니면 결선상의 문제일수도 있겠...
    • 빵빵빵
    • 2003.07.23 21:11
    • 3 COMMENTS
    • /
    • 0 LIKES
    • major
      2003.07.23 22:23
      안녕하세염... 전 꽁수를 좋아하는 관계로...ㅠ.ㅠ 밴드중에 PageHeader가 있으면 Page Header가...
    • 빵빵빵
      2003.07.23 23:57
      디테일밴드에 BeforePrint에 이벤트를 주었습니다. 그런데 문제가 있습니다. BeforePrint에 이벤트...
    • major
      2003.07.24 00:42
      허허허 이거는 이벤트가지고 약간씩만 조정하시면 될 것 같은데요.. 근데 이거 디테일 밴드에 이미...
    • 조경모
    • 2003.07.23 21:02
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 열심히
      2003.07.23 21:58
      이번트 중에 onEnter OnExit 라는 이벤트가 있습니다. 포커스가 들어갈때 나갈때 이런 뜻이겠죠?? 이...