2017-07-28 41 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