안영제님, 답변 고맙습니다.
우선 급한대로 님의 조언대로 땜질을 하겠습니다.
근데, 이 에러는 두고두고 걸리네요... ^^
파이어버드가 뭔가 문제가 있는 듯한데...
이 버그를 파이어버드에 올려서 개선해 주기를 대신 부탁드립니다.
고맙습니다.
civilian,안영제 님이 쓰신 글 :
: 편법입니다만, 트리거를
:
: AS
: declare variable AQty Decimal(12,3);
: declare variable AUnit Decimal(12,3);
: declare variable AAmount Decimal(12,3);
: begin
: AQty = New.qty;
: AUnit = New.Unit_price;
: AAmount = AQty * AUnit;
:
: New.amount= AAmount;
: end
:
: 이렇게 고쳐서 써보세요.
: 원인은 잘 모르겠습니다만, 이렇게 고쳐서 쓰니 잘 되는군요.
:
:
: 초보자 님이 쓰신 글 :
: : 이런 필드가 있습니다.
: :
: : Qty [Double Precision]
: : Unit_Price [Double Precision]
: : Amount [Double Precision]
: :
: : Before Insert/Before Update 의 트리거에서
: :
: : new.amount = new.qty * new.unit_price;
: :
: : 이렇게 넣어줬습니다.
: :
: : 업체에서 계산이 맞지 않는다는 연락을 받고 확인해봤는데...
: : 파이어버드가 계산을 이상하게 하더군요.
: :
: : 다음은 파이어버드가 계산한 값입니다.
: :
: : qty unit_price amount
: : -------- ---------- --------------
: : 10,327.56 4,700 48,539,529.98
: :
: : 윈도의 계산기와 델파이에서의 계산 결과는 48,539,532 로 나오는데요
: :
: : 파이어버드와 계산 값이 무려 2원 정도 차이가 납니다.
: : 이걸 어떻게 해야할지 막막하네요.
: :
: : 이 글을 보시는 분들도 저런 필드를 만들고 값을 넣어서 테스트 해보시면
: : 아마 황당한 결과를 보실겁니다.
: :
: : 좀 도와주세요. 흑흑...
: :
: : 앗, 참고로 파이어버드 버젼은 2.0 rc5로 최신의 상태입니다.
|