2015-08-23 64 views
2

我想在Delphi中創建一個餅圖,它會向用戶顯示玩特定運動的人數。使用Delphi TChart顯示來自數據庫的信息

以下SQL語句從數據庫獲取信息並將人數存儲在變量中。數據庫中的數據類型爲「是/否」,因此玩特定運動的玩家將會打勾,而那些不會打的。 SQL語句將確定有多少人玩特定運動(如果在數據庫中打勾)

qry.sql.clear; 
qry.sql.add('SELECT Count(tennis) AS [NoTennis] FROM [Sports] WHERE Tennis = True'); 
qry.Open; 
iTennis := qry['NoTennis']; {integer variable} 

重複此過程爲所有其他的運動,如游泳,曲棍球等

此後該數據必須在餅圖中表示。我有以下代碼...

Chart1.Series[0].AddXY(iTennis, 1, 'Tennis', clTeeColor); 

這也明顯地重複所有其他運動。但是,不是在運行時顯示我的數據,它仍然顯示有關鍵盤和駕駛者等的隨機數據。要查看我在說什麼,請點擊here

如何讓TChart更改其數據?是SQL語句還是添加導致問題的x和y值?

+1

不要擔心。這些是設計時顯示的示例數據,用於幫助您配置圖表,因爲您可以看到預覽。無論如何,你可能會考慮一次獲取所有統計數據(在一個查詢中)並使用'TDBChart'。 – TLama

+0

或者,也許更好地建立一個結構(類),其中包含您將呈現的所有數據以及設置圖表的演示者。用數據填充實例並呈現它。之後,從哪裏獲取數據並不重要。首先建立主持人並對其進行測試。然後用db中的數據填充實例並顯示它。 –

+0

您可以提供一個簡單的示例項目,使用示例數據庫,我們可以運行「按原樣」來重現此處的問題?謝謝。 –

回答

2

您正在顯示餅圖。圖表類型與您如何將數據添加到圖表相關。我記得AddXy只用於基於行的圖表。嘗試

Chart1.Series[0].Add(123, 'Tennis'); 

參見steema documentation

要清除一系列先前生成的值,可以使用

Chart1.Series[0].Clear();