我用SQL得出了一个结果集A:
字段1 字段2
1 4
2 5
3 6
4 7
5 8
6 9
我现在用饼图显示1~6各占总数的百分比,可问题是显示出来的百分比总是不对,通过查找原因,发现在求总数时总是将第一个值“4”加了两次,即总数为43,然后得到“1”的百分比为4/43*100,“2”的百分比为5/43*100。。程序代码如下:
Series1.DataSource := ADOQuery1;
Series1.XLabelsSource := 'EmployeeID';
Series1.PieValues.ValueSource :='SumShip';
说明:查询出来的数据用DBGrid显示时是:
1 4
2 5
3 6
4 7
5 8
6 9
记录1没有重复。
请问大家这怎么解决,已经困扰我很久了!!!小弟在这先谢谢大家了
字段1 字段2
1 4
2 5
3 6
4 7
5 8
6 9
我现在用饼图显示1~6各占总数的百分比,可问题是显示出来的百分比总是不对,通过查找原因,发现在求总数时总是将第一个值“4”加了两次,即总数为43,然后得到“1”的百分比为4/43*100,“2”的百分比为5/43*100。。程序代码如下:
Series1.DataSource := ADOQuery1;
Series1.XLabelsSource := 'EmployeeID';
Series1.PieValues.ValueSource :='SumShip';
说明:查询出来的数据用DBGrid显示时是:
1 4
2 5
3 6
4 7
5 8
6 9
记录1没有重复。
请问大家这怎么解决,已经困扰我很久了!!!小弟在这先谢谢大家了
确实为TeeChart7的一个bug,修改的地方如下:
找到TeEngine.pas文件,其中有一个procedure TChartValueList.RecalcStats
原文件如下:
procedure TChartValueList.RecalcStats(StartIndex:Integer);
var t : Integer;
tmpValue : TChartValue;
begin
{$IFDEF TEEARRAY}
if Count>Length(Value) then // 7.0 HV suggestion
Count:=Length(Value);
{$ENDIF}
if Count>0 then
begin
if StartIndex=0 then
begin
tmpValue:=Value[0];
FMinValue:=tmpValue;
FMaxValue:=tmpValue;
FTotal:=tmpValue;
FTotalABS:=Abs(tmpValue);
end; for t:=StartIndex to Count-1 do ////问题就出在这地方,应将其改为for t:=StartIndex+1 to Count-1 do 因为第一个记录数据先前已经加过了。
Begin
tmpValue:=Value[t]; if tmpValue<FMinValue then FMinValue:=tmpValue else
if tmpValue>FMaxValue then FMaxValue:=tmpValue; FTotal:=FTotal+tmpValue;
FTotalABS:=FTotalABS+Abs(tmpValue);
end;
end; Modified:=False;
end;