请教大家一个关于tPieSeries的问题?

crazycsu 2004-10-07 12:37:58
我用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没有重复。
请问大家这怎么解决,已经困扰我很久了!!!小弟在这先谢谢大家了。。。
...全文
68 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
crazycsu 2004-10-07
  • 打赏
  • 举报
回复
大家救救我吧!
明天就要上班了!!!
crazycsu 2004-10-07
  • 打赏
  • 举报
回复
问题解决,方法如下:
确实为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;

crazycsu 2004-10-07
  • 打赏
  • 举报
回复
用tChart好像也有同样的问题
crazycsu 2004-10-07
  • 打赏
  • 举报
回复
那样会不会麻烦些,我想这是不是tPieSeries的一个bug..
chengchong1979 2004-10-07
  • 打赏
  • 举报
回复
用Tchart吧,手工添加

2,497

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧