2017-07-28 60 views
3

我有一个数据集返回数据,如低于系列在运行时创建时不在TeeChart中显示?

日期,面积,销售

2017年1月1日,食堂,1000
2017年1月1日,健身房,3000
01/01/2017,沙龙,2000
2017年2月1日,食堂,5000
2017年2月1日,健身房,6000
2017年2月1日,沙龙,7000

我一个米试图使用该数据

创建堆积条形图

系列的数量将是不同的

我有下面的逻辑来创建系列,但我不知道如何添加每一个值,例如我需要X轴按日期,并有2个酒吧。根据上述数据,每个酒吧然后堆叠3个系列。

while not tblSalesBreakdownByDate.Eof do 
begin 
    nIndex := objList.IndexOf(tblSalesBreakdownByDateCategory.AsString); 
    if nIndex = -1 then 
    begin 
    objSeries := TBarSeries.Create(Self); 
    objSeries.MultiBar := TMultiBar.mbStacked; 
    objSeries.Title := tblSalesBreakdownByDateCategory.AsString; 

    chrtBreakdownByDate.SeriesList.Add(objSeries); 
    objList.AddObject(objSeries.Title, objSeries) 
    end 
    else 
    objSeries := objList.Objects[nIndex]; 

    objSeries.Add(tblSalesBreakdownByDateTotalSales.AsFloat, tblSalesBreakdownByDateTransactionDate.AsString); 

    tblSalesBreakdownByDate.Next; 
end; 

当我运行这个,虽然它不会崩溃,我没有看到我添加的任何系列?

任何人都可以看到什么是错的?

有没有简单的方法来做到这一点?

理想情况下,我宁愿使用数据库图表,但我不知道如何做,因为数据不是静态的?

干杯

保罗

回答

3

相反的:

chrtBreakdownByDate.SeriesList.Add(objSeries); 

呼叫AddSeries方法:

chrtBreakdownByDate.AddSeries(objSeries); 

或不添加任何方法调用设置ParentChart到系列:

objSeries.ParentChart := chrtBreakdownByDate; 

SeriesList集合不会收集集合更改,因此该系列未添加到图表中。在运行时可以在TChart参考页面上找到如何添加系列的示例。

+0

对于DBChart我想你会需要为每个系列单独的数据集,这是你的情况下每个区域的数据集。 – Victoria

+0

这听起来讨厌在运行时间哈哈!我可能不得不这样做,因为这是不工作时使用标准图表(不同的问题) – Paul

+0

好吧,DBChart数据绑定是为系列(到系列'DataSource'属性你分配数据集和它的'YValues.ValueSource'属性字段,您希望显示值)。也许你可以按日期和地区排序数据集,以获得我认为你想要的组。 – Victoria