안뇽 하신가여 고수님 & 중수님들 ^^ 오늘두 모르는게 있어서리.. 질문을 함당..
아시는 고수님 & 중수님들 이불쌍한 초보를 위해 가르침을 주심 감솨 하겠습니다..
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; 이렇게 나오게 할수 있을까요 ㅠㅠ 그럼 고수님들의 존답변 기다림당...ㅠㅠ
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);