我用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.   

    那样会不会麻烦些,我想这是不是tPieSeries的一个bug..
      

  2.   

    问题解决,方法如下:
    确实为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;