Q&A

  • 분류먼저 해주시길 부탁드립니다.
다시한번 질문 할께요.

정보처리 기사 문제를 풀다가 의문이 있어서요



폼을 두개 사용 합니다.

그리고 하나는 입력과 계산에(여기에 테이블을 2개사용).. 하나는 출력에 사용하는 폼입니다.

출력테이블은 입력정보(입력테이블)를 출력테이블에 계산된필드에 계산하여 테이블을 생성합니다.





<입력폼>

출력테이블

제품. 10대 20대 30대 토탈... ->10대,20대,30대는 계산된 필드 입니다.

aaa 12 33 42 87 ->그리고 모든 제품코드는 데이블에

bbb 33 0 0 33 입력되어 있습니다.

ccc 0 0 0 0

ddd 21 0 22 43





입력 테이블

고객번호 제품 수량

32 a2 33

23 a4 32

12 a7 65







입력 ------ [button]

------ [button]

------



입력 폼은 대충 입런식 입니다.





<출력폼>

출력데이타



제품. 10대 20대 30대 토탈

aaa 12 33 42 87

bbb 33 0 0 33

ccc 0 0 0 0 <= 바로이부분 제품 ccc를 출력 되지 않게 하려 합니다.

ddd 21 0 22 43



총주문량:XXXX



입력 데이타



고객번호 제품 수량

32 a2 33

23 a4 32

12 a7 65





요렇게..



제품. 10대 20대 30대 토탈

aaa 12 33 42 87

bbb 33 0 0 33

ddd 21 0 22 43



위의 답변대로 테이블을 두개 사용 했습니다.

그리고 출력폼의 테이블은 입력폼에 있는출력테이블을 연결하여 사용 했습니다.

답변해주신 대로 했더니 토탈만 출력이 안되더라구요. 에구...

다시한번 부탁 드립니다. 방법이 없을까요. 배열을 썼으면 가능하겠지만

데이타베이스로 해보고 싶어서요.

디비그리드로는 제한을 가할수 있는 방법이 없나요?

아님 테이블을 하나더 생성해야 하나? 토탈이 0이면 새테이블에 넣지않는다.....쩝.

가능하면 새로운 테이블을 생성하지않고 하려고 합니다. 데이타가 중복되니깐요.

다시한번 부탁 드립니다.

아~그리고 퀵레포트나 다른걸로 대체해서 출력할수 있는 방법이 있을까요???

퀵레포트는 테이블 2개를 출력하려하니깐 안되더라구요..쩝.

부탁 합니다.



아래는 제가 몇일전 질문했던 내용 입니다.







이재식 wrote:

> 이상헌 wrote:

> > 정보처리 기사 문제를 풀다가 의문이 있어서요

> >

> > 폼을 두개 사용 합니다.

> > 그리고 하나는 입력과 계산에.. 하나는 출력에..테이블은2개.

> >

> > 테이블 하나에는 입력정보를 다른 하나의 테이블에는 계산된테이블을 만듭니다.

> >

> > 예)..

> >

> > 제품. 10대 20대 30대 토탈... ->10,20,30은 계산된 필드 입니다.

> > ??? 12 33 42 6767

> > ㅇㄹ 33 0 0 22

> > ㅇㅇ 0 0 0 0

>

>

> > 입력 테이블

> >

> > 고객번호 제품 수량

> > 32 44 33

> >

> >

> > 위의 출력. 계산된 테이블중 토탈이 0인 레코드는 출력을 하지 않을 려고 합니다.

> > 출력은 다른 폼에 디비그리드를 하나더 만들어 놓고 사용 합니다.

> > 테이블에 filter를 가하니가 되지 않더라구요.. 계산된 필드라 그렇다는데...쩝..

> > 부탁 드립니다.

>

> 이재식 Wrote :

> 안녕하세요?

> 질문이 다소 이해가 좀 안가지만, 의도는 알겠습니다.

> 귀하의 경우처럼, 특정 값이 무엇일때 출력을 원하지 않는다면

> 바로 GetText이벤트를 쓰는 것입니다.

> 이 이벤트는 테이블 컴포넌트이든 쿼리 컴포넌트이든

> 둘 다 있습니다.

> 위에서 보니까 테이블 컴포넌트를 쓰신 것 같아요.(Filter얘기가 있어서)

> 아무튼, Field Editor에 들어가시면(컴포넌트를 더블클릭)

> 그냥 필드이든 계산된 필드이든 그것을 Add하세요.

> 그리고, 해당 필드를 선택한뒤 F11(오브젝트 창)에 가보시면

> Event탭이 있죠.

> 거기에 보면 GetText이벤트가 있어요.

> 한마디로 특정 필드의 값이 0일때는 출력을 안하고 싶으면

> 조건을 준다음에 DisPlayText := false라고 해주면 되거든요.

> GetText이벤트 사용법은 제가 전에 설명을 한 적이 있는데요,

> 한번 검색해서 찾아보세요. 데이터베이스분류에 있어요.

> 그럼...

>

2  COMMENTS
  • Profile
    이재식 1999.10.08 20:31
    안녕하십니까?

    전에 있었던 제목과 틀려서 알아보질 못했습니다.

    2가지 질문이군요,

    먼저 제가 말씀드렸던 GetText이벤트입니다.

    이것은 쿼리된 필드의 결과값을 편집하기 위해서 쓰이는

    것이므로, 해당사항이 아니네요.

    다시 읽어보니 원하는 레코드(즉, 출력이 0)는 아예 DBGrid에 출력을

    원치 않는경우이군요.

    그런데, 문제는 그 필드가 calc필드라는 것이죠.

    제가 알아보니 calc필드는 filtering이 되질 않아요.

    애석하군요.

    그런데요, 문제는 화면출력시에 입니다.

    이 결과들을 DBGrid에 보여줄 것인지, 아니면 퀵레포트를 이용해서

    보여줄 것인지를 결정해야 겠죠.

    제 개인적 생각으론 결과를 화면에 보여줄때는 DBGrid보다는

    퀵레포트를 이용하는것이 좋을 것 같아요.

    (주위 아는사람들 그렇게 하더라구요)

    1. 화면에 결과를 보여줄때(DBGrid)

    -> total이 0인것은 보여주기를 원치 않으므로,

    open를 한다음, while를 돌려서 total이 0인것은 삭제를 하고

    while이 다 끝난다음, 다시 open를 하는거죠.

    (이유는 calc필드는 filtering이 안되므로)

    : 좀 무식한가요?

    2. 화면에 결과를 보여줄때(퀵레포트)

    -> 제가 아는사람들도 결과를 화면에 출력할때는

    퀵레포트를 이용하더라구요.

    /* 잘 모르겠는데, 이렇게하는것이 시험취지에 맞대요.

    그리고, 가급적이면 DB를 쓰는것도 그렇고요.(??~~)

    */

    Detail Band의 beforePrint이벤트에 이렇게 하면 되요.

    if Query1.FieldByName('total').asInteger = 0 then

    PrintBand := false ;

    이렇게만하면 total이 0인 레코드는 출력이 안됩니다.

    (이 방법을 권장하고 싶네요)



    또하나.

    레포트 출력인데요.

    현재, 입력 테이블, 출력 테이블 두개를 하나의 퀵 레포트에

    출력을 하고 싶은 것 같아요.

    일단은 출력테이블을 detail밴드와 연결시키고요,

    입력 테이블 내용은 사실상 프로그램 가동시에 입력받은

    원시 데이터이므로, 이것은 따로 배열등등에 저장을 해 두어야 합니다.

    그러면, 그 배열등에 저장된 내용을

    summary band나 pagefooter band에 출력을 시키면 되요.

    이것역시 입력데이터개수가 유동적이기 때문에,

    대체 몇개를 QRDBText, QRLabel를 그려야 하는문제인데요,

    간단해요.

    기사문제에서는 항상 입력데이터의 최대개수가 주어집니다.

    따라서, 미리 그 개수만큼 QRDBText(or QRLabel)를 올려놔요.

    그런다음, 실제로 몇개를 입력받았는지를 알 수 있잖아요.

    그럼, 해당 band의 beforePrint이벤트에서 height값을 조절해버리면

    됩니다.

    물론, 다른 방법도 있습니다만...





    OnNeedData이벤트를 쓰시면 되는데요,

    이것을 쓰시면 따로 배열등이 필요없이 출력테이블 내용과 입력테이블

    내용을 한 퀵레포트에 출력할 수 있어요.

    레포트를 사실상 99% 조절할 수 있어요.

    그럼...



  • Profile
    이주흥 1999.10.07 23:20
    흠..안녕하세요...

    첫번째 질문은 솔직히 이해가 안가구요..

    두번째 질문인 퀵리포트 출력은 간단합니다.

    두개의 테이블을 가지고 쿼리한 결과를 한

    리포트에 보여줄려면 QRCompositeReport를

    쓰면 됩니다.

    일단 각 테이블별로 리포트를 하나씩 만듭니다.

    그리고 새로운 리포트를 만들어서 QRCompositeReport

    를 리포트 위에 올려놓고 OnAddReports 이벤트에 아래와

    같이 코딩하면 됩니다.



    with QRCompositeReport do begin

    Reports.Add(form1.QuickRep1); //레포트 를 추가.

    Reports.Add(form2.QuickRep2);

    end;



    그리고 레포트 출력 이벤트에서 예를 들어 버튼클릭에서



    QrCompositeReport.Preview;



    해주면 됩니다...

    주의할점은 OnAddReports이벤트에서 레포트를 추가한

    순서대로 보여진다는 겁니다..

    그리고 이건 따로 나오는게 아니라 첫번째 레포트

    다음에 연달아서 나옵니다...그리고 타이틀도 안먹고...

    두 레포트 줄 맞추는 것도 상당히 귀찮습니다.

    그렇지만 이 방법밖에 없네요...

    그럼 이만.....





    • memogi
    • 1999.10.08 00:40
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 김영대
      1999.10.08 00:56
      // 해상도 변경은 아래 예제와 같습니다 // 참고로 사용자가 해상도를 변경했는지 검사하는 방법은 // 제...
    • 구창민
      1999.10.07 23:07
      장영선 wrote: > 비쥬얼베이직에서는 특정 문자열을 가지고 오는 MID함수라는게 있는데 델파이에서는 특정...
    • 이정욱
      1999.10.07 22:53
      음.. 하도 오래되어서 MID가 모하는 함수였는지 까먹었네요.. 만약 원하는 문자열을 찾는것이라면 POS ...
    • 이상헌
    • 1999.10.07 21:45
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 이재식
      1999.10.08 20:31
      안녕하십니까? 전에 있었던 제목과 틀려서 알아보질 못했습니다. 2가지 질문이군요, 먼저 제가 말씀드렸...
    • 이주흥
      1999.10.07 23:20
      흠..안녕하세요... 첫번째 질문은 솔직히 이해가 안가구요.. 두번째 질문인 퀵리포트 출력은 간단합니다....
    • 박성태
    • 1999.10.07 21:19
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 이재식
      1999.10.08 03:55
      박성태 wrote: > 델파이4와 Personal Oracle 7.3.3을 집에 있는 Pc에서 > 쓸려고 Local로 연결할려고 그...
    • 오승섭
      1999.10.08 00:41
      박성태 wrote: > 델파이4와 Personal Oracle 7.3.3을 집에 있는 Pc에서 > 쓸려고 Local로 연결할려고 그...
    • 여용구
    • 1999.10.07 20:00
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 김종환
      1999.10.07 20:14
      여용구 wrote: > 안녕하세요.. > > 델파이를 처음 공부하는 사람입니다. > > 물어볼 것은... 이미...
    • David
    • 1999.10.07 19:48
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 구창민
      1999.10.07 22:53
      David wrote: > 안녕하십니까? > > Delphi의 Design Time에서 invisible Component(예:TQuery, TTable....
    • David
      1999.10.07 23:31
      구창민님 감사합니다만, 제 프로그램은 실행시 Panel이 움직입니다. 구창민님 답변대로라면, Panel아래 Pa...
    • 구창민
      1999.10.08 00:21
      David wrote: > 구창민님 감사합니다만, 제 프로그램은 실행시 Panel이 움직입니다. > 구창민님 답변대로...
    • 이정욱
      1999.10.07 20:36
      음냐.. 그럼 무쟈게 편하게 하는 방법이 있습니다. 메모뿐 아니라 그림까지 나오는.... XPower라는 컴포...
    • 심동식
    • 1999.10.07 19:29
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      1999.10.07 20:32
      정확하게 이해가 가지 않습니다. 무슨 컴포넌트를 사용하시는지요? 생성시 폴더값을 넣으시면 당연히 되...
    • 안경옥
    • 1999.10.07 18:49
    • 4 COMMENTS
    • /
    • 0 LIKES
    • 박윤종
      1999.10.07 19:10
      안경옥 wrote: > 안녕하십니까..지금 밖에 비가 오는데..우산은 가지고들 나오셨나요?? > 이런날씨에비맞...
    • 이정욱
      1999.10.07 19:08
      안녕하세요? DB를 잘몰라서 두가지를 말씀해 볼께요.. 아래처럼 한번 해보시구요... qrlabel1.capti...
    • 안경옥
      1999.10.07 20:26
      이정욱 wrote: > 안녕하세요? > DB를 잘몰라서 두가지를 말씀해 볼께요.. > > 아래처럼 한번 해보시구...
    • 이정욱
      1999.10.07 20:29
      음.. 그럼 제 생각엔 다른곳에 문제가 있는것 같군요. qrlabel11.caption 이라는 값을 가지고 숫자처럼 활...
    • 김홍진
    • 1999.10.07 09:36
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 박윤종
      1999.10.07 10:19
      김홍진 wrote: > 전문가님들의 고견을 구합니다. > > 질문 1. 디렉토리 생성은 MkDir(Edit1.Tex...
    • jackie
    • 1999.10.07 04:50
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      1999.10.07 19:12
      당연 가능합니다. BarCode 컴포넌트는 상용도 있고 공개도 있습니다. 그런데 퀵리포트에서 사용하실...
    • 김진철
    • 1999.10.07 03:13
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      1999.10.07 19:10
      DBMemo를 사용하지 그러세요...?? 만약 DBMemo를 쓰기 싫어서 그러신다면.. mfield 라는 필드를 메모...
    • 오용섭
    • 1999.10.07 03:09
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 박윤종
      1999.10.07 10:42
      오용섭 wrote: > 안녕하세요 > > 이번에 출시된 델파이 5와 4의 호환성은 어느정도인지요.. 구체적으로...
    • 신사
    • 1999.10.07 02:48
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 박윤종
      1999.10.07 10:29
      열심이 wrote: 당연한 결과 입니다. 이것을 해결하기 위해서는 모달 폼의 종료시에 메인 폼의 해...
    • 구창민
      1999.10.07 02:02
      손주양 wrote: > 안녕하세요. > 이곳에서 많은 도움을 받고 있습니다. 감사하게 생각합니다. > 알고 싶...
    • 김영대
      1999.10.07 01:58
      손주양 wrote: > 안녕하세요. > 이곳에서 많은 도움을 받고 있습니다. 감사하게 생각합니다. > 알고 싶...