所以,我遇到的問題是,我爲每個學生在圖上顯示兩個欄,我只想要其中的一個。他們是正確的身高,所以這很好。 這是我的Delphi源代碼;簡單的Delphi DBcharting
strlstField := TStringList.Create();
ADOQGetResults.SQL.clear;
ADOQGetResults.SQL.Add(
'SELECT Results.StudentID, SUM(Results.Rawmark) as TRM, StudentInfo.Fname '+
'FROM (StudentInfo INNER JOIN Results ON StudentInfo.StudentID = Results.StudentID) '+
'WHERE (((StudentInfo.StudentID)=Results.StudentID)) AND Results.TestID =12 '+
'GROUP BY StudentInfo.Fname, Results.StudentID'
);
ADOQGetResults.Active := True;
ADOQGetResults.Open;
DBChart1.Title.Text.Clear;
DBChart1.Title.Text.Add('Class leaderboard');
DBChart1.Title.Font.Size := 15;
DBChart1.LeftAxis.Title.Font.Size := 12;
DBChart1.LeftAxis.Title.Caption := 'Total marks';
DBChart1.BottomAxis.Title.Font.Size := 12;
DBChart1.BottomAxis.Title.Caption := 'Student';
//Charting Series
//To Remove Old Series
for intCnt := DBChart1.SeriesCount -1 downto 0 do
DBChart1.Series[intCnt].Free;
//To Add New Series
for intCnt := 1 to ADOQGetResults.FieldCount - 1 do
begin
strlstField.Add(ADOQGetResults.FieldList[intCnt].FieldName);
DBChart1.AddSeries(TBarSeries.Create(nil));
end;
//To set source for Series
for intCnt:= 0 to DBChart1.SeriesCount -1 do
begin
with DBChart1 do begin
Series[intCnt].Clear;
Series[intCnt].Title := strlstField[intCnt];
Series[intCnt].ParentChart := DBChart1;
Series[intCnt].DataSource := ADOQGetResults;
Series[intCnt].XLabelsSource := 'Fname';
Series[intCnt].YValues.ValueSource := 'TRM';
end;
end;
我一直在努力工作出什麼走錯了一整天,所以如果任何人都可以在所有幫助我會非常感激! 以下是圖表現在的樣子; http://oi48.tinypic.com/6qelba.jpg
「Crazy runtime stuff」LOL。但設計時間的東西只有在你只有一種類型的查詢和圖表時纔有用。 OP的文章可能只是一個更多變量場景的簡單例子。但對於所有其他評論/評論,請+1反饋:) – 2013-03-24 08:27:43
如果您需要通過所有方法在運行時添加TBarChart。但如果你不這樣做,那最好不要。 「主動:真實」的方法跟隨着這種開放,重複的方式,讓我認爲這個人基本上是隨意妄爲的,而不是那麼有意。 – 2013-03-24 18:26:04