Q&A

  • 퀵리포트 너무 어려워요......
저는 퀵리포트를 처음 접해보는 퀵 초보 입니다.

델파이에서 쿼리 콤포넌트의 사용은 어느정도 한다고 생각하는데...

퀵리포트에 쿼리의 결과를 넣기가 상당히 힘이 듭니다.

아래에 나와 있는 질문과 답변들을 봐서

물론 모든 답변을 이해한것은 아니지만

대부분은 제 프로그램에 적용시킬수 있었습니다.

하지만 아무리 고민을 하고 만들어 봐도 도무지....

퀴리부터 어떻게 해야하고 퀵리포트를 만들어야 하는지.

모르겠습니다.

도사님들의 조언이 절실히 필요합니다.

아무리 어려운 구문을 사용하더라도 가능하기만 하면

좀 가르쳐 주세요

몇일 을 밤세워 서라도 이해하도록 하겠습니다.

이제 어떤 건지 설명 하겠습니다.



납품처 => 갑,을,병 의 세개가 있고,

품목 => A,B,C 의 세개가 있습니다.

데이터를 입력 할때는

품목 납품처 수량

A 갑 10

A 을 20

A 병 30

B 갑 11

B 을 21

B 병 31

C 갑 12

C 을 22

C 병 32

실제 테이블에 이렇게 저장이 됩니다.



퀵리포트에는

품목 갑 을 병 합계

A 10 20 30 60

B 11 21 31 63

C 12 22 32 66

합계 33 63 93

이렇게 출력되게 하려고 합니다.

여기다가 더 추가되는 기능이

납품처 리스트가 추가, 삭제, 변경이 될수 있습니다.

그래서 납품처가 10곳이 넘으면 다음 페이지에

예)

품목 갑 을 병 합계

A 10 20 30 60

B 11 21 31 63

C 12 22 32 66

합계 33 63 93



품목 정 무 기 합계

A 10 20 30 60

B 11 21 31 63

C 12 22 32 66

합계 33 63 93

이렇게 품목은 중복이 되지만 납품처는 한페이지에 표현할수 있는

항목만 나타나고 다음 페이지는 같은 품목에 나머지 납품처가

나타 나게 하려고 합니다.

물론 두번째 페이지에도 모자르면 세번째 페이지....

그이상도 가능하여야 합니다.



SQL 문을 이용해서 생각해고 답이 안나오고....]

퀵 리포트에서 생각해고 답이 나오지 않습니다.

도와 주세요....

이것 때문에 일주일째 잠을 못자고 있습니다....흑흑

가엾은 어린양을 보살피시어

부디 도와 주시기 바랍니다.....





2  COMMENTS
  • Profile
    신호성 1999.07.04 21:14
    강경중 께서 말씀하시기를...

    > 저는 퀵리포트를 처음 접해보는 퀵 초보 입니다.

    > 델파이에서 쿼리 콤포넌트의 사용은 어느정도 한다고 생각하는데...

    > 퀵리포트에 쿼리의 결과를 넣기가 상당히 힘이 듭니다.

    > 아래에 나와 있는 질문과 답변들을 봐서

    > 물론 모든 답변을 이해한것은 아니지만

    > 대부분은 제 프로그램에 적용시킬수 있었습니다.

    > 하지만 아무리 고민을 하고 만들어 봐도 도무지....

    > 퀴리부터 어떻게 해야하고 퀵리포트를 만들어야 하는지.

    > 모르겠습니다.

    > 도사님들의 조언이 절실히 필요합니다.

    > 아무리 어려운 구문을 사용하더라도 가능하기만 하면

    > 좀 가르쳐 주세요

    > 몇일 을 밤세워 서라도 이해하도록 하겠습니다.

    > 이제 어떤 건지 설명 하겠습니다.

    >

    > 납품처 => 갑,을,병 의 세개가 있고,

    > 품목 => A,B,C 의 세개가 있습니다.

    > 데이터를 입력 할때는

    > 품목 납품처 수량

    > A 갑 10

    > A 을 20

    > A 병 30

    > B 갑 11

    > B 을 21

    > B 병 31

    > C 갑 12

    > C 을 22

    > C 병 32

    > 실제 테이블에 이렇게 저장이 됩니다.

    >

    > 퀵리포트에는

    > 품목 갑 을 병 합계

    > A 10 20 30 60

    > B 11 21 31 63

    > C 12 22 32 66

    > 합계 33 63 93

    > 이렇게 출력되게 하려고 합니다.

    > 여기다가 더 추가되는 기능이

    > 납품처 리스트가 추가, 삭제, 변경이 될수 있습니다.

    > 그래서 납품처가 10곳이 넘으면 다음 페이지에

    > 예)

    > 품목 갑 을 병 합계

    > A 10 20 30 60

    > B 11 21 31 63

    > C 12 22 32 66

    > 합계 33 63 93

    >

    > 품목 정 무 기 합계

    > A 10 20 30 60

    > B 11 21 31 63

    > C 12 22 32 66

    > 합계 33 63 93

    > 이렇게 품목은 중복이 되지만 납품처는 한페이지에 표현할수 있는

    > 항목만 나타나고 다음 페이지는 같은 품목에 나머지 납품처가

    > 나타 나게 하려고 합니다.

    > 물론 두번째 페이지에도 모자르면 세번째 페이지....

    > 그이상도 가능하여야 합니다.

    >

    > SQL 문을 이용해서 생각해고 답이 안나오고....]

    > 퀵 리포트에서 생각해고 답이 나오지 않습니다.

    > 도와 주세요....

    > 이것 때문에 일주일째 잠을 못자고 있습니다....흑흑

    > 가엾은 어린양을 보살피시어

    > 부디 도와 주시기 바랍니다.....

    >

    >



    안녕하세요 강경중씨? 어려운 문제로 고생 많으십니다.



    먼저 어떤 데이터베이스를 사용하는가에 따라 방법이 틀려질 것 같군요.

    일반적인RDB라면 Stored Procedure를 이용하는 것이 가장 쉬운 방법일것 같구요.

    (어떤 RDB의 경우는 위와같은 매트릭스테이블을 지원하는걸로 알고 있습니다)





    그렇지 않다면 어렵더라도 먼길을 돌아가셔야 하겠네요.

    아마도 파라독스를 사용하실것 같은데...

    위와같은 형태의 자료를 쉽게 산출할 수 있는 방법으로 Decision Cube를 이용하면

    결과값은 쉽게 구할 수 있지만 이를 Report로 출력하려면 조금은 수고를 하셔야 합니다.





    또다른 중요한 포인트는 가변항목의 문제입니다.

    질문에서는 납품처가 가변적이라 하셨는데 품목은 변하지 않는지가 중요하구요.

    가변적인 항목을 강경중씨의 생각처럼 가로로 나열하여 10개항목이 넘으면 다음페이지에

    출력하려는 생각은 퀵레포트의 특성상 쉽지 않은 방법입니다.

    즉 거래처가 가변적이고 품목이 고정된다면 위 출력방법과 반대로 거래처와 품목을 바꾸어

    출력하는것이 훨씬 쉬운방법입니다.



    (품목이 고정적이라는 가정하에)

    Query를 이용하여 출력하는 경우에도 몇가지 방법이 있을것 같은데요.

    먼저 가장 생각하기 쉬운 방법은 두개의 쿼리를 이용하여 거래처 목록과 결과값을

    각각 산출하여 조합하는 방법입니다

    먼저 하나의 쿼리는 거래처만 Select하여 (SELECT DISTINCT 거래처명 FROM TABLE명) DetailBand

    에 출력하면 아래와 같겠죠.



    거래처 품목A 품목B 품목C 합계



















    다른 하나의 Query는 품목의 값을 구하되 거래처 Query를

    마스터로 설정(품목Query의 DataSource를 거래처Query의 DataSource로 설정)합니다.

    SQL의 내용을 아래와 같은 형태로 처리하여 품목란에 출력하면 되겠죠.

    SELECT A, B, C, A+B+C FROM Table명

    WHERE 거래처명 = :거래처명

    GROUP BY 거래처명



    또다른 방법은 아예 완전한 결과목록을 Query로 만들어 내는 방법인데요.

    이 방법은 좀더 복잡하지만 시도할 가치가 있는 방법입니다.

    동적으로 SQL을 생성하고 값을 산출하여 대입하는 방법인데 설명하기에는 너무 내용이 길어져

    생략합니다.(조금 응용하면 Decision Cube와 같은 기능을 할 수 있죠.)



    만일 품목마져도 가변적이라면 상황은 좀더 복잡해져서 레포트 출력 콤포넌트를 동적으로 생성하고

    처리해야 합니다. 이런 방법으로 프로그램을 한번 해보시면 아마도 퀵레포트쯤은 손안에 넣을 수 있을겁니다.



    또다른 많은 방법들이 있을겁니다.

    이것 저것 시도해 보시구 해결하지 못하면 Mail주세요.

    그땐 실제 내용을 가지고 같이 고민해보죠.









  • Profile
    손인호 1999.07.05 17:19
    신호성 께서 말씀하시기를...

    > 강경중 께서 말씀하시기를...

    > > 저는 퀵리포트를 처음 접해보는 퀵 초보 입니다.

    > > 델파이에서 쿼리 콤포넌트의 사용은 어느정도 한다고 생각하는데...

    > > 퀵리포트에 쿼리의 결과를 넣기가 상당히 힘이 듭니다.

    > > 아래에 나와 있는 질문과 답변들을 봐서

    > > 물론 모든 답변을 이해한것은 아니지만

    > > 대부분은 제 프로그램에 적용시킬수 있었습니다.

    > > 하지만 아무리 고민을 하고 만들어 봐도 도무지....

    > > 퀴리부터 어떻게 해야하고 퀵리포트를 만들어야 하는지.

    > > 모르겠습니다.

    > > 도사님들의 조언이 절실히 필요합니다.

    > > 아무리 어려운 구문을 사용하더라도 가능하기만 하면

    > > 좀 가르쳐 주세요

    > > 몇일 을 밤세워 서라도 이해하도록 하겠습니다.

    > > 이제 어떤 건지 설명 하겠습니다.

    > >

    > > 납품처 => 갑,을,병 의 세개가 있고,

    > > 품목 => A,B,C 의 세개가 있습니다.

    > > 데이터를 입력 할때는

    > > 품목 납품처 수량

    > > A 갑 10

    > > A 을 20

    > > A 병 30

    > > B 갑 11

    > > B 을 21

    > > B 병 31

    > > C 갑 12

    > > C 을 22

    > > C 병 32

    > > 실제 테이블에 이렇게 저장이 됩니다.

    > >

    > > 퀵리포트에는

    > > 품목 갑 을 병 합계

    > > A 10 20 30 60

    > > B 11 21 31 63

    > > C 12 22 32 66

    > > 합계 33 63 93

    > > 이렇게 출력되게 하려고 합니다.

    > > 여기다가 더 추가되는 기능이

    > > 납품처 리스트가 추가, 삭제, 변경이 될수 있습니다.

    > > 그래서 납품처가 10곳이 넘으면 다음 페이지에

    > > 예)

    > > 품목 갑 을 병 합계

    > > A 10 20 30 60

    > > B 11 21 31 63

    > > C 12 22 32 66

    > > 합계 33 63 93

    > >

    > > 품목 정 무 기 합계

    > > A 10 20 30 60

    > > B 11 21 31 63

    > > C 12 22 32 66

    > > 합계 33 63 93

    > > 이렇게 품목은 중복이 되지만 납품처는 한페이지에 표현할수 있는

    > > 항목만 나타나고 다음 페이지는 같은 품목에 나머지 납품처가

    > > 나타 나게 하려고 합니다.

    > > 물론 두번째 페이지에도 모자르면 세번째 페이지....

    > > 그이상도 가능하여야 합니다.

    > >

    > > SQL 문을 이용해서 생각해고 답이 안나오고....]

    > > 퀵 리포트에서 생각해고 답이 나오지 않습니다.

    > > 도와 주세요....

    > > 이것 때문에 일주일째 잠을 못자고 있습니다....흑흑

    > > 가엾은 어린양을 보살피시어

    > > 부디 도와 주시기 바랍니다.....

    > >

    > >

    >

    > 안녕하세요 강경중씨? 어려운 문제로 고생 많으십니다.

    >

    > 먼저 어떤 데이터베이스를 사용하는가에 따라 방법이 틀려질 것 같군요.

    > 일반적인RDB라면 Stored Procedure를 이용하는 것이 가장 쉬운 방법일것 같구요.

    > (어떤 RDB의 경우는 위와같은 매트릭스테이블을 지원하는걸로 알고 있습니다)

    >

    >

    > 그렇지 않다면 어렵더라도 먼길을 돌아가셔야 하겠네요.

    > 아마도 파라독스를 사용하실것 같은데...

    > 위와같은 형태의 자료를 쉽게 산출할 수 있는 방법으로 Decision Cube를 이용하면

    > 결과값은 쉽게 구할 수 있지만 이를 Report로 출력하려면 조금은 수고를 하셔야 합니다.

    >

    >

    > 또다른 중요한 포인트는 가변항목의 문제입니다.

    > 질문에서는 납품처가 가변적이라 하셨는데 품목은 변하지 않는지가 중요하구요.

    > 가변적인 항목을 강경중씨의 생각처럼 가로로 나열하여 10개항목이 넘으면 다음페이지에

    > 출력하려는 생각은 퀵레포트의 특성상 쉽지 않은 방법입니다.

    > 즉 거래처가 가변적이고 품목이 고정된다면 위 출력방법과 반대로 거래처와 품목을 바꾸어

    > 출력하는것이 훨씬 쉬운방법입니다.

    >

    > (품목이 고정적이라는 가정하에)

    > Query를 이용하여 출력하는 경우에도 몇가지 방법이 있을것 같은데요.

    > 먼저 가장 생각하기 쉬운 방법은 두개의 쿼리를 이용하여 거래처 목록과 결과값을

    > 각각 산출하여 조합하는 방법입니다

    > 먼저 하나의 쿼리는 거래처만 Select하여 (SELECT DISTINCT 거래처명 FROM TABLE명) DetailBand

    > 에 출력하면 아래와 같겠죠.

    >

    > 거래처 품목A 품목B 품목C 합계

    > 갑

    > 을

    > 병

    > 정

    > 진

    > 사

    > 오

    > 미

    >

    > 다른 하나의 Query는 품목의 값을 구하되 거래처 Query를

    > 마스터로 설정(품목Query의 DataSource를 거래처Query의 DataSource로 설정)합니다.

    > SQL의 내용을 아래와 같은 형태로 처리하여 품목란에 출력하면 되겠죠.

    > SELECT A, B, C, A+B+C FROM Table명

    > WHERE 거래처명 = :거래처명

    > GROUP BY 거래처명

    >

    > 또다른 방법은 아예 완전한 결과목록을 Query로 만들어 내는 방법인데요.

    > 이 방법은 좀더 복잡하지만 시도할 가치가 있는 방법입니다.

    > 동적으로 SQL을 생성하고 값을 산출하여 대입하는 방법인데 설명하기에는 너무 내용이 길어져

    > 생략합니다.(조금 응용하면 Decision Cube와 같은 기능을 할 수 있죠.)

    >

    > 만일 품목마져도 가변적이라면 상황은 좀더 복잡해져서 레포트 출력 콤포넌트를 동적으로 생성하고

    > 처리해야 합니다. 이런 방법으로 프로그램을 한번 해보시면 아마도 퀵레포트쯤은 손안에 넣을 수 있을겁니다.

    >

    > 또다른 많은 방법들이 있을겁니다.

    > 이것 저것 시도해 보시구 해결하지 못하면 Mail주세요.

    > 그땐 실제 내용을 가지고 같이 고민해보죠.

    >

    >

    굳이 퀵리포트나 쿼리를 하용하지 않아도 된다면, 그리드나 배열을 이용하여

    미리 결과를 만든후에 그 결과를 리포트오 보내는 방법이 훨신 쉬울것 같군요.









    • Endy
    • 1999.07.05 19:19
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 조복기
      1999.07.05 19:54
      Endy 께서 말씀하시기를... > 저는 MS-SQL7.0을 사용합니다. Delphi에서 StoreProcedure를 실행하면 BDE E...
    • pascal
    • 1999.07.05 12:36
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 김길중
    • 1999.07.04 11:27
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 하명훈
      1999.07.05 23:25
      김길중 께서 말씀하시기를... > 또 올립니다. > > 테이블 바꿔주고 db 알리아스를 제데로 설정하였는데...
    • 구창민
      1999.07.04 22:19
      김길중 께서 말씀하시기를... > 또 올립니다. > > 테이블 바꿔주고 db 알리아스를 제데로 설정하였는데...
    • 이태호
    • 1999.07.04 11:07
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      1999.07.04 11:19
      한글은 두바이트로 되어있습니다. 즉, KeyDown에서는 처리가 안된다는 이야기죠. 복잡하게 안하시려면 On...
    • 이정욱
      1999.07.04 11:28
      음.. 조금 쉬운 방법으로는 또하나의 RichEdit을 만들어서 Visible을 꺼 놓은 상태로 그곳으로 RTF를 Load...
    • 이소라
      1999.07.04 13:33
      답장을 주셔서 감사드립니다. 그런데 제가 원하는 것은 RTF의 속성이 그대로 나타나는 것이거든요. 글...
    • 이정욱
      1999.07.04 11:23
      두가지 방법이 떠오르는 군요. 하나는 타이머를 이용한 방법. 또하나는 시스템 후킹을 이용한 방법입니다...
    • 이만준
      1999.07.05 09:11
      답변 감사드립니다... 하하...그렇게 하면 되겠군요... 저는 실행되기 전에 막는 방법만 생각했었거...
    • 이정환
    • 1999.07.04 07:13
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 구창민
      1999.07.04 22:14
      이정환 께서 말씀하시기를... > 전역(Global) 변수로 > lineindex, linenumber, line: integer로 선언하...
    • 이정환
      1999.07.05 05:06
      구창민님 답변에 감사드립니다. 제 코딩 실력을 보고 웃으셨겠군요. 답을 주신 것을 보고 저도 한참 웃...
    • 김길중
    • 1999.07.04 02:30
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      1999.07.04 11:30
      편집기에서 마우스의 오른쪽 버튼을 눌러보세요. 그곳에 ReadOnly라는곳을 꺼주세요. 그리고 혹시 모르...
    • 이정욱
      1999.07.04 09:24
      불가능 합니다. NT서버를 옆에 붙여 놓고 같이 사용하는 수 밖에는.... 김정민 께서 말씀하시기를... ...
    • 김정민
      1999.07.04 22:40
      정말로 불가능한건가요.. 다른 누구도 아닌 정욱님께서 불가능하다고 잘라 말하시니 온몸에 힘이 쭉.. 빠집...
    • 이정욱
      1999.07.05 07:59
      포팅이라는것이... 쩝... 포팅라이브러리같은것은 없습니다. 그런것이 아니구요.. 혹시 솔라리스용 ...
    • 안치봉
      1999.07.04 04:55
      솔라리스용으로 포팅하면 됩니다. 김정민 께서 말씀하시기를... > 델파이로 만든 웹 애플리케이션을 솔...
    • 강경중
    • 1999.07.04 00:00
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 신호성
      1999.07.04 21:14
      강경중 께서 말씀하시기를... > 저는 퀵리포트를 처음 접해보는 퀵 초보 입니다. > 델파이에서 쿼리 콤포...
    • 손인호
      1999.07.05 17:19
      신호성 께서 말씀하시기를... > 강경중 께서 말씀하시기를... > > 저는 퀵리포트를 처음 접해보는 퀵 초...
    • 왕초
    • 1999.07.03 21:28
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 김길중
    • 1999.07.03 20:00
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      1999.07.03 21:09
      코드에디터 밑의 에러와 워닝을 보여주는 창을 유심히 살펴보세요.. 혹시 그곳에 Can not output 어쩌구 ...
    • 이호선
    • 1999.07.03 19:24
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      1999.07.03 21:06
      LightLib는 현재 단종된 품목입니다. 미국 Luxent사에서 더이상 업그레이드와 기술지원을 안한다고 하네요...