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

Database Delphi TeeChart仅显示数据集中的一条记录,database,delphi,teechart,Database,Delphi,Teechart,使用Delphi Steema TeeChart组件,如果我使用用户界面将一个BarSeries链接到一个数据集,它会显示得很好,但是如果我使用代码(我需要这样做),它只显示一个条,即使我在数据库中有多条记录。我做错了什么 代码: ADataSet是一个DevXpress MemData(TdxMemData)。当我运行程序时,X轴仅显示一个条,即数据集中的第一条记录,即使数据集中有4条记录。TChart在每次设置时刷新查询 ADataSet.Active:=真 因此,将此命令移到块的末尾(例如

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

代码:


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

TChart在每次设置时刷新查询

ADataSet.Active:=真

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

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

请注意,数据源应该是TTable、TQuery或TDataSet(而不是TDataSource-go-figure!)


希望这有帮助。

组件的名称是“tchart”,因此您可能需要编辑标题和文本。还有几个其他StackOverflow问题标记为“tchart”,因此这将有助于搜索类似的问题。我理解,我使用TeeChart强调这是Steema的组件,而不是Delphi的默认组件。谢谢,这很有效。我去掉了数据源,改为这样做了,它成功了:Bar.DataSource:=ADataSetGreat!我很高兴这有帮助。谢谢,但这没有帮助。我将LoadFromDataSet和Active:=true移动到TBarSeries设置位置的下方,但它仍然只显示了一条记录。因为它显示了一条记录,所以它必须知道数据集是活动的,并且里面有记录,但不确定为什么它没有显示所有记录。您是否尝试过暂时切换到通用的delphi数据集(例如,仅一个指向Excel电子表格的tadodataset,类似于这样简单的东西)来分离此问题的供应商(dbx和steema)\
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;
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;