Delphi TeeChart仅显示数据集中的一条记录

时间:2009-02-10 01:57:14

标签: database delphi teechart

使用Delphi Steema TeeChart组件,如果我使用用户界面将BarSeries链接到数据集,它显示正常,但如果我使用代码(我需要),它只显示一个条,即使我在数据库中有几条记录。我做错了什么?

代码:

var
   i:Integer;
   Bar:TBarSeries;
begin
   ADataSet.Close;
   ADataSet.LoadFromDataSet(mtbl);
   ADataSet.Active := true;
   ADataSet.First;
   ASource.DataSet := ADataSet;

   Bar := TBarSeries.Create(AChart);
   Bar.Assign(Series2);
   Bar.ParentChart := AChart;
   Bar.DataSource := ASource;
   Bar.XLabelsSource := 'Date';
   Bar.YValues.ValueSource := 'Load';

   for i := 0 to AChart.SeriesCount - 1 do
   begin
      AChart.Series[i].CheckDataSource;
   end;

ADataSet是一个DevExpress MemData(TdxMemData)。当我运行程序时,X轴只显示一个条形,即数据集中的第一条记录,即使我在数据集中有4条记录。

2 个答案:

答案 0 :(得分:3)

此代码适用于我(使用具有字段ID和高度的Access数据库,我在表单上删除了TDBChart,TADODataSet和TButton):

procedure TForm1.Button1Click(Sender: TObject);  
var   
    Bar : TBarSeries;  
begin  
    ADODataSet1.Close;  
    ADODataSet1.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;...';  
    Bar := TBarSeries.Create(DBChart1);  
    DBChart1.AddSeries(Bar);  
    Bar.ParentChart := DBChart1;  
    Bar.DataSource := ADODataSet1;  
    Bar.XLabelsSource := 'ID';  
    Bar.YValues.ValueSource := 'Height';  
    ADODataSet1.Active := true;  
end;

请注意,数据源应该是TTable,TQuery或TDataSet(不是TDataSource - 去图!)。

希望这有帮助。

答案 1 :(得分:0)

每次设置

时,TChart都会刷新查询
  

ADataSet.Active:= true;

所以,将此命令移动到块的末尾(例如,在设置系列属性之后)。