【问题标题】:teechart delphi reportbuilder limit data from pipelineteechart delphi reportbuilder限制来自管道的数据
【发布时间】:2018-07-16 15:14:35
【问题描述】:

我的 teechart 数据系列使用数据管道作为源。我作为数据源的表有 60 行数据,但我只想根据其中 3 行绘制图表。对于我正在绘制的列,其他 57 行的数据为 0。我想要的图表(基于 3 行)将显示 6 个大条(2 列 x 3 行),但由于该系列有 57 个未使用和看不见的行,因此 6 个条非常细。如何将数据源中的数据限制为 3 行?

下图显示了我想要的结果(6 个大条)与我得到的结果(6 个细条)。

【问题讨论】:

  • 欢迎来到 SO!提供一些您尝试过的代码示例,以便人们可以为您指明正确的方向。祝你好运。
  • 您好。我正在尝试使用reportbuilder RAP 和DADE 来执行此操作,因此我没有任何代码示例。我试图 chart1.series[0].add ( 100, "") 但这不会编译(试图手动添加数据)。上面显示的结果只是使用了编辑图表界面所以没有代码。
  • 为什么不将数据集过滤到所需的六行?

标签: delphi teechart reportbuilder


【解决方案1】:

正如@John Easleythis comment 中所说,您可以过滤它,而不是将表分配给系列。

即,使用随 TeeChart 组件一起提供的“TeeChart Pro 数据库”中的“员工”表。这里是完整的数据:

您可以循环该表并使用Add/AddXY 将条件批准的值添加到您的系列:

uses Series;

procedure TForm1.FormCreate(Sender: TObject);
begin
  with Chart1.AddSeries(TBarSeries) do
  begin
    Marks.Style:=smsValue;

    Table1.Open;
    while not Table1.Eof do
    begin
      if Table1.FieldByName('SALARY').AsFloat > 42000 then
         Add(Table1.FieldByName('SALARY').AsFloat, Table1.FieldByName('LASTNAME').AsString);

      Table1.Next;
    end;
    Table1.Close;
  end;
end;

【讨论】:

    【解决方案2】:

    感谢您的回答。

    因为我使用的是 ReportBuilder 和 RAP,所以我的做法略有不同,但概念是相同的。

    在我的报告模板中,我创建了一个设置为手动数据的 Techart。然后我使用以下代码添加XY点:

    ChartManual.chart.series[0].clear; ChartManual.chart.series[0].AddXY(1,100,'A',RGB(0,0,252)); ChartManual.chart.series[0].AddXY(2,200,'B',RGB(0,0,252)); ...etc

    找到确切的 RAP 语法有点困难,所以我希望这可以在这种情况下帮助其他人。

    再次感谢

    J

    【讨论】:

      猜你喜欢
      • 2019-08-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-17
      • 2018-08-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多