Q&A

  • calcfield에서 group by 사용문제
판매관리 프로그램을 만들려고합니다.



paradox table에 다음과 같이 field를 구성하였습니다



판매번호 판매자사번 판매자이름 판매물품명 판매금액

1 111 홍길동 cdrw 350,000



여기에 판매자별 수당을 지급하기 위하여 calcfield(sudang)를 추가하고 판매금액의 12%를

주기위하여 이벤트를 설정하였습니다.



그리고 판매자별 수당합계를 내기위하여 Query 콤포넌트(QueryMon)를 사용하여

with QueryMon do begin

close;

sql.clear;

sql.add('select sabun, sudang from panmae.db');

sql.add(' group by sabun');

open;

end;

와같이 하였습니다

그런데 에러가 납니다

calcfield인 sudang 필드를 찾을수 업다는 내용인것같은데

무었이 문제이고 어떻게 해야하는지요

아시는분 답변부탁드립니다.

감사합니다.



5  COMMENTS
  • Profile
    류동균 2000.03.06 08:01
    당연히 에러가 나죠.

    sudang field 는 DB의 Table에 존재하지 않는 필드이기때문에(calcfield)

    Query문에서 에러가 나죠.



    Query문을 다음과 같이 고치면 될것입니다.



    select sabun,sum(판매금액) * 0.12 as sudang from panmae.db group by sabun



    그럼 아녕히.







  • Profile
    최두승 2000.03.14 09:27
    >진심으로 감사드립니다.

    많은 도움이 되었습니다.

    비슷한 질문을 다시한번 드립니다.

    저는 교육연수부에 근무하고있습니다

    그래서 업무를 효율적으로 하기 위해서 프로그램을 하나 만들려고 하는데

    잘 되지 않네요

    회사에서 많은 강사들이 강의를 하는데, 모든 강의를 점수화시켜 계산하려고 합니다.

    database이름은 lecture.db이고요 field는 강의번호(lno), 강사사번(sabun),

    출강과정명(pname), 강의제목(lname), 만족도(manjok), 비고(bigo) 입니다.

    여기에 calcfield를 formshow이벤트에 추가하였습니다.

    출강점수(lpoint) : 출강과정명(pname)에따라 1-5점이 주어짐

    만족도점수(manpoint) : 만족도(manjok)에따라 0-5점이 주어짐

    합계점수(totalpoint) : 출강점수(lpoint) + 만족도점수(manpoint)

    여기까지는 잘되어 dbgrid에 잘 나타납니다.

    이제 강사별로 총 상황을 보기위하여 "강사별 합계점수"버튼을 누르면

    강사별로(sabun별로) avg(manjok), sum(lpoint), sum(manpoint), sum(totalpoint)

    를 dbgrid에 나타내고 싶습니다.

    그런데 잘 안되네요

    여러가지 책을 살펴보았지만 이런내용에 대한 설명은 없습니다.

    바쁘시겠지만 해결방법이 있으면 꼭 부탁드립니다.

    감사합니다.



  • Profile
    뿌요 2001.01.03 18:40
    강사별로(sabun별로) avg(manjok), sum(lpoint), sum(manpoint), sum(totalpoint)를 나타낼려면 lecture.db에 lpoint,manpoint,totalpoint가 있어야 합니다.

    그러면..

    select sabun,avg(manjok), sum(lpoint), sum(manpoint), sum(totalpoint)

    from lecture

    group by sabun

    이런식으로 하면 됩니다.. 다른 요지였다면 다시 올려주세요..



    최두승 wrote:

    > >진심으로 감사드립니다.

    > 많은 도움이 되었습니다.

    > 비슷한 질문을 다시한번 드립니다.

    > 저는 교육연수부에 근무하고있습니다

    > 그래서 업무를 효율적으로 하기 위해서 프로그램을 하나 만들려고 하는데

    > 잘 되지 않네요

    > 회사에서 많은 강사들이 강의를 하는데, 모든 강의를 점수화시켜 계산하려고 합니다.

    > database이름은 lecture.db이고요 field는 강의번호(lno), 강사사번(sabun),

    > 출강과정명(pname), 강의제목(lname), 만족도(manjok), 비고(bigo) 입니다.

    > 여기에 calcfield를 formshow이벤트에 추가하였습니다.

    > 출강점수(lpoint) : 출강과정명(pname)에따라 1-5점이 주어짐

    > 만족도점수(manpoint) : 만족도(manjok)에따라 0-5점이 주어짐

    > 합계점수(totalpoint) : 출강점수(lpoint) + 만족도점수(manpoint)

    > 여기까지는 잘되어 dbgrid에 잘 나타납니다.

    > 이제 강사별로 총 상황을 보기위하여 "강사별 합계점수"버튼을 누르면

    > 강사별로(sabun별로) avg(manjok), sum(lpoint), sum(manpoint), sum(totalpoint)

    > 를 dbgrid에 나타내고 싶습니다.

    > 그런데 잘 안되네요

    > 여러가지 책을 살펴보았지만 이런내용에 대한 설명은 없습니다.

    > 바쁘시겠지만 해결방법이 있으면 꼭 부탁드립니다.

    > 감사합니다.

    >

  • Profile
    하얀까마귀 2000.03.04 21:28
    안녕하세요 하얀까마귀 입니다.

    종이학님께서 말씀하신 내용이 맞는데요..



    저는 좀 이상해서 몇자 적으려고 합니다..



    왜 group by 를 쓰죠???

    사번이번 당연히 Unique 일테고 그럼 그대로 오픈 하면 되잖아요...

    사번이 같은 사람이 여러명이면 그게 이상한 것 같고요..



    굳이 그렇게 해야 한다면 종이학님께서 말씀하신것 처럼

    group by에 들어가지 않은 필드는 반드시 어떤 연산을 해야 합니다...

    왜냐면 여러행을 나타낼수 없으니까요...

    Max or Min을 사용하는 것도 괜찮을것 같네요... 그럼.. 즐거운 시간 되세요.

    - 하얀 까마귀 -

  • Profile
    종이학 2000.03.04 18:20
    최두승 wrote:

    > 판매관리 프로그램을 만들려고합니다.

    >

    > paradox table에 다음과 같이 field를 구성하였습니다

    >

    > 판매번호 판매자사번 판매자이름 판매물품명 판매금액

    > 1 111 홍길동 cdrw 350,000

    >

    > 여기에 판매자별 수당을 지급하기 위하여 calcfield(sudang)를 추가하고 판매금액의 12%를

    > 주기위하여 이벤트를 설정하였습니다.

    >

    > 그리고 판매자별 수당합계를 내기위하여 Query 콤포넌트(QueryMon)를 사용하여

    > with QueryMon do begin

    > close;

    > sql.clear;

    > sql.add('select sabun, sudang from panmae.db');

    > sql.add(' group by sabun');

    > open;

    > end;

    > 와같이 하였습니다

    > 그런데 에러가 납니다

    > calcfield인 sudang 필드를 찾을수 업다는 내용인것같은데

    > 무었이 문제이고 어떻게 해야하는지요

    > 아시는분 답변부탁드립니다.

    > 감사합니다.

    >



    먼저.. 이건 Calcfield가 아니라 select문에 문제입니다.



    select sabun, sum(sudang)

    from panmae.db

    group by sabun;

    으로 해야 합니다..



    먼저 작성하신

    select문에 sabun, sudang이 두 필드가 sum이 아니라면

    group by 에 모두 들어가야 겠지요...

    문제는 한 사번에 대한 전체 판매수당 합계라면 sum을 해 줘야 겠죠..