2009-02-10 76 views
1

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

代码:

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条记录。

+0

组件的名称是“tchart”,因此您可能需要编辑标题和文本。有几个其他StackOverflow问题标记为“tchart”,所以这将有助于寻找类似的。 – Argalatyr 2009-02-10 03:53:47

+0

我明白,我用TeeChart强调这是Steema的组件,而不是Delphi的默认组件。 – Robo 2009-02-10 04:40:28

回答

3

此代码对我的作品(使用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 - 请看图!)。

希望这会有所帮助。

0

TChart刷新查询每次设置

ADataSet.Active:= TRUE;

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

+0

谢谢,但这没有帮助。我将LoadFromDataSet和Active:= true移动到TBarSeries设置部分的下方,并且它仍然只显示一条记录。由于它显示了一条记录,因此它必须知道该数据集处于活动状态并且有记录,不知道为什么它没有显示所有记录。 – Robo 2009-02-10 04:44:37