안녕 하세요...
필요할때마다 와서 많은 걸 배워 가네요...
모든 분들께 감사합니다..
다름이 아니라... 초등학생도 다 하줄 아는 덧셈 뺄셈을 프로그램이 못하네요..
함 봐주세요..
procedure TfrmPmmjjegoF10.grdF01Display(Sender: TObject);
var
aRow : LongInt;
hJaego, aIpgo, aChgo, aCtrl, aIpgoP, aChgoP, aCtrlP, aJaego, aJaegoP:Double;
begin
With qrH Do Begin
First;
While Not qrH.Eof Do Begin
qrD.Filtered:= False;
qrD.Filter:= '[JjCode] = '''+ Fieldbyname('JjCode').AsString +'''';
qrD.Filtered:= True;
qrP.Filtered:= False;
qrP.Filter:= '[JjCode] = '''+ Fieldbyname('JjCode').AsString +'''';
qrP.Filtered:= True;
if aParam1 <> '1' then begin
hJaego := 0; aIpgo := 0; aChgo := 0; aCtrl := 0;
aIpgoP := 0; aChgoP := 0; aCtrlP := 0; aJaego := 0; aJaegoP := 0;
aIpgoP := qrP.Fieldbyname('Ipgo').AsFloat;
aChgoP := qrP.Fieldbyname('Chgo').AsFloat;
aCtrlP := qrP.Fieldbyname('Ctrl').AsFloat;
aIpgo := qrD.Fieldbyname('Ipgo').AsFloat;
aChgo := qrD.Fieldbyname('Chgo').AsFloat;
aCtrl := qrD.Fieldbyname('Ctrl').AsFloat;
aJaegoP := aIpgoP-aChgoP+aCtrlP;
aJaego := aIpgo-aChgo+aCtrl;
// 밑에는 생략 하겠습니다.
위에 보시면 aIpgoP := 3600 이 들어 갑니다.
aChgoP := 3600 이 들어 갑니다.
aCtrlP := 0 이 들어 갑니다.
이세가지를 연산을 합니다.
aJaegoP := -aChgoP+aIpgoP+aCtrlP 하면 당연히 "0" 이 나와야 합니다.
그런데 이상하게 -4.5 가 나옴니다.
실 데이타로는 -4.51222312332e-13 이란 값이 들어갑니다.
이게 무슨 경우 일까요...
사용 데이타베이스는 MS-SQL 7.0 입니다.
그리고 모두 Float 형으로 되어 있는 데이타들입니다.
제발 알려 주세요...
제 생각엔,,,
입고, 출고 등의 값이 정수형이라면
Round 함수를 사용하여 연산하면 될것 같습니다.