Q&A

  • 쿼리에 대한 질문임니다.. 이럴땐 어떤방법이 있는쥐 ㅠㅠ
안뇽 하신가여 고수님 & 중수님들 ^^ 오늘두 모르는게 있어서리.. 질문을 함당..

아시는 고수님 & 중수님들 이불쌍한 초보를 위해 가르침을 주심 감솨 하겠습니다..

var

money,budget:integer;

begin



with main_qry do

begin

close;

sql.Clear;

sql.add('select a.청구번호,a.부서코드, a.사번,b.품명,b.maker,b.표준단가,a.사용예정일,a.구매량,(a.구매량*b.표준단가)as 구매가격,');

sql.add('a.계정코드,a.작성일,a.구입사유,c.월누계액');

sql.add('from (gmmaster a inner join 구매품명 b on a.부품번호 = b.item),구매예산 c');

sql.add('where a.계정코드=c.계정코드 and a.사번 = '''+sa+''' and a.작성일=:now1 ');

parambyname('now1').asdatetime:=strtodatetime(formatdatetime('yyyy-mm-dd',datetimepicker1.Date));

prepare;

open;

TBcdField(Fields[5]).DisplayFormat:= '#,###,###원';

TBcdField(Fields[8]).DisplayFormat:= '#,###,###원';

while not eof do

begin

money := fieldbyname('구매가격').asinteger + money;

budget:= qur.fieldbyname('월누계예산').asinteger+budget;

next;

end;

end;



이렇게 쿼리하면 값이 이상하게 나와서리 ㅠㅠ 지가 생각 한게 약간 빗나가서....



지는 월누계예산에서 구매 가격을 빼줄려구했는디 ㅠㅠ



값이 이런식으로 나와서리 ㅠㅠ



청구번호 품명 사번 계정코드 부서코드 표준단가 구매가격. ... 월누계예산

123456 1 123 61111 95354 1000 1000 30000

123456 2 123 60511 95354 1000 1000 10000

123456 3 123 61111 95354 1000 1000 30000



이렇게 값이 나옴당 ㅠㅠ 이것이 먼뜻이냐면여(1)번과 (3)번은 품명이 다르지만.. 이것들은 같은 계정에 속합니다.. 그러니까.. 그러니까 월누계예산은 한번만 나와야 하다는 거죠..

정확하게 말하자면 중복된 계정코드가 한번만 나오면된다는거죠..



그러면 월누계예산은 제가 생각 한대루 한다면 40000 이렇게 나오겠죠...



하쥐만 위의 소스를 돌리면 ㅠㅠ budget:=70000; 이렇게 답이 나옴당 ㅠㅠ 어떻게 하면



budget:=40000; 이렇게 나오게 할수 있을까요 ㅠㅠ 그럼 고수님들의 존답변 기다림당...ㅠㅠ



3  COMMENTS
  • Profile
    사발우성 2000.10.10 23:10
    with main_qry do

    begin

    close;

    sql.Clear;

    sql.add('select a.청구번호,a.부서코드, a.사번,b.품명,b.maker,b.표준단가,a.사용예정일,a.구매량,(a.구매량*b.표준단가)as 구매가격,');

    sql.add('a.계정코드,a.작성일,a.구입사유');

    sql.add('from (gmmaster a inner join 구매품명 b on a.부품번호 = b.item)');

    sql.add('where a.사번 = '''+sa+''' and a.작성일=:now1 ');

    parambyname('now1').asdatetime:=strtodatetime(formatdatetime('yyyy-mm-dd',datetimepicker1.Date));

    prepare;

    open;

    TBcdField(Fields[5]).DisplayFormat:= '#,###,###원';

    TBcdField(Fields[8]).DisplayFormat:= '#,###,###원';

    while not eof do

    begin

    money := fieldbyname('구매가격').asinteger + money;

    next;

    end;

    end;



    qur.Close;

    qur.SQL.clear;

    qur.SQL.Add('select 월누계예산 from 구매예산 ');

    qur.sql.add('where 계정코드 in (select distinct 계정코드 from gmmaster where 작성일=:now and 계정코드='''+edit5.Text+''' and 부서코드='''+dn+''')');

    qur.SQL.Add('and mm='''+mm+''' and yy='''+yy+'''');

    qur.ParamByName('now').asdatetime:=strtodatetime(formatdatetime('yyyy-mm-dd',datetimepicker1.Date));

    qur.open;

    while not qur.eof do

    begin

    budget:= qur.fieldbyname('월누계예산').asinteger+budget;

    qur.next

    end;

    if (budget - money) < 0 then

    memo1.text:='해당월 누계예산액을 초과했습니다'+#13#10+inttostr(budget - money);

    if budget=0 then

    memo1.text:='해당월 누계예산액이 없습니다.';

    memo1.Text :='해당월 누계예산액 :'+SpaceStr(1)+inttostr(budget)+#13#10+'금일 청구금액 :'+inttostr(money)+#13#10+'차일 누계액 :'+inttostr(budget - money);

  • Profile
    성더기 2000.10.10 19:25
    사발우성 wrote:

    > 안뇽 하신가여 고수님 & 중수님들 ^^ 오늘두 모르는게 있어서리.. 질문을 함당..

    > 아시는 고수님 & 중수님들 이불쌍한 초보를 위해 가르침을 주심 감솨 하겠습니다..

    > var

    > money,budget:integer;

    > begin

    >

    > with main_qry do

    > begin

    > close;

    > sql.Clear;

    > sql.add('select a.청구번호,a.부서코드, a.사번,b.품명,b.maker,b.표준단가,a.사용예정일,a.구매량,(a.구매량*b.표준단가)as 구매가격,');

    > sql.add('a.계정코드,a.작성일,a.구입사유,c.월누계액');

    > sql.add('from (gmmaster a inner join 구매품명 b on a.부품번호 = b.item),구매예산 c');

    > sql.add('where a.계정코드=c.계정코드 and a.사번 = '''+sa+''' and a.작성일=:now1 ');

    > parambyname('now1').asdatetime:=strtodatetime(formatdatetime('yyyy-mm-dd',datetimepicker1.Date));

    > prepare;

    > open;

    > TBcdField(Fields[5]).DisplayFormat:= '#,###,###원';

    > TBcdField(Fields[8]).DisplayFormat:= '#,###,###원';

    > while not eof do

    > begin

    > money := fieldbyname('구매가격').asinteger + money;

    > budget:= qur.fieldbyname('월누계예산').asinteger+budget;

    > next;

    > end;

    > end;

    >

    > 이렇게 쿼리하면 값이 이상하게 나와서리 ㅠㅠ 지가 생각 한게 약간 빗나가서....

    >

    > 지는 월누계예산에서 구매 가격을 빼줄려구했는디 ㅠㅠ

    >

    > 값이 이런식으로 나와서리 ㅠㅠ

    >

    > 청구번호 품명 사번 계정코드 부서코드 표준단가 구매가격. ... 월누계예산

    > 123456 1 123 61111 95354 1000 1000 30000

    > 123456 2 123 60511 95354 1000 1000 10000

    > 123456 3 123 61111 95354 1000 1000 30000

    >

    > 이렇게 값이 나옴당 ㅠㅠ 이것이 먼뜻이냐면여(1)번과 (3)번은 품명이 다르지만.. 이것들은 같은 계정에 속합니다.. 그러니까.. 그러니까 월누계예산은 한번만 나와야 하다는 거죠..

    > 정확하게 말하자면 중복된 계정코드가 한번만 나오면된다는거죠..

    >

    > 그러면 월누계예산은 제가 생각 한대루 한다면 40000 이렇게 나오겠죠...

    >

    > 하쥐만 위의 소스를 돌리면 ㅠㅠ budget:=70000; 이렇게 답이 나옴당 ㅠㅠ 어떻게 하면

    >

    > budget:=40000; 이렇게 나오게 할수 있을까요 ㅠㅠ 그럼 고수님들의 존답변 기다림당...ㅠㅠ

    >



    정렬을 계정별로 정렬시켜두 상관없다면 방법이 있는디..

    그렇게 하면 안돼겠져?...^^

  • Profile
    사발우성 2000.10.10 19:53
    어떤방법입니까??? 갈켜주이소 ㅠㅠ 급함당... 이번주까쥐 끝내야하걸랑여 ㅠㅠ