Query1 sql : select su,amt from aaa
Query1 에서 추가된 필드명 : damt
Query1 이 가지고 있는 기본 필드 su, amt
damt 필드는 amt 필드의 값이 0보다 클때에는 amt 값이 들어가고
그렇지 않을때에는 (su * amt) 값이 들어값니다.
Query1의 결과값들은 dbgrid에 나타납니다...
그렇게 해서 damt의 값을 구하고 구한 값들의 합을 리포트가 아닌 Medit 로 값을 받아
폼에 나타낼려고 합니다.
조언 부탁드립니다...
<!--CodeS-->
procedure Tfexam1.Query1CalcFields(DataSet: TDataSet);
begin
if Query1.FieldByName('amt').AsFloat >= 0 then
begin
Query1.FieldByName('damt').AsFloat := Query1.FieldByName('amt').AsFloat;
end
else
begin
Query1.FieldByName('damt').AsFloat := Query1.FieldByName('amt').AsFloat
* Query1.FieldByName('su').AsFloat;
end;
end;
<!--CodeE-->
방법이 여러가지가 있을것같은데요.....
1. 먼저 쿼리를 돌리고 나서 While 문으로 Query1.First; 부터 순차적으로 돌리면서 값을 더해주는방법.
2. 그냥단순히 쿼리문으로 Sum을 해서 구하는방법.(함수로 만들어 사용하면 좋겠죠!)
3. Query1CalcFields에서 값을 구하는방법
문의하신것으로 간단하게 적습니다....
<!--CodeS-->
// 먼저 변수선언
1. var
TmpRecNum : Real;
2. //초기화값선언
TmpRecNum:=0;
3. procedure Tfexam1.Query1CalcFields(DataSet: TDataSet);
if Query1.FieldByName('amt').AsFloat >= 0 then
begin
Query1.FieldByName('damt').AsFloat := Query1.FieldByName('amt').AsFloat;
end
else
begin
Query1.FieldByName('damt').AsFloat := Query1.FieldByName('amt').AsFloat
* Query1.FieldByName('su').AsFloat;
end;
TmpRecNum:=TmpRecNum+Query1.FieldByName('damt').AsFloat;
4. procedure Tfexam1.Query1AfterOpen(DataSet: TDataSet);
begin
Edit1.Text:=FormatFloat('#,##0.#0',TmpRecNum);
end;
<!--CodeE-->