하얀까마귀 님이 쓰신 글 :
: lisa 님이 쓰신 글 :
: : 퀵리포트를 사용하여 통계 작업을 하고 있습니다.
: : 다이너믹하게 TQRExpr 를 사용하여 Expression에 각 필드에 대한 Sum을 하고 있는데요
: : 단위가 21억이 넘어가니 integer overflow 에러가 발생합니다.
: :
: : 해결할 수 있는 방법이 있나요?
: : 아래와 같이 선언하여 사용하고 있는데요.
: : QRSummery:= TQRExpr.Create(self);
: : QRSummery.Name:= 'QRSummery'+IntToStr(i);
: : QRSummery.Parent:= QRBand2;
: : QRSummery.AutoSize:= False;
: : QRSummery.Alignment:= DBGrid.Columns[i].Alignment;
: : QRSummery.Transparent:= True;
: : QRSummery.Font.Style := QRSummery[i].Font.Style + [fsBold];
: : QRSummery.Left:= Startleft;
: : QRSummery.Top:= 8;
: : QRSummery.Width:= Round(DBGrid.Columns[i].Width * widthRatio);
: : QRSummery.Expression:= 'Sum('+DBGrid.Columns[i].FieldName+')';
: : QRSummery.OnPrint:= ExtChange;
: : QRSummery.Enabled:= True;
: :
: : integer의 한계가 21억이라 나는 에러인 것 같은데 QRSummery의 타입을 새로 지정해 줄 수
: : 있는 것도 아닌 것 같고 어느 부분을 수정해야 할 지를 모르겠네요.
: :
: : 도움 부탁드립니다. 감사합니다.
:
:
: 리포트를 써본지가 오래되어서.. ㅎㅎ
:
: 방법이 없다면.. 할수 없죠.. 코딩으로 계산을 하셔서 qrlabel에다가 뿌려주시면 될듯하네요.
할 수 없이 Currency 변수 선언하고 거기에 담아서 계산한 다음에 QRSummery는 Label로 변경하여 처리하였어요.
|