FastReport 文件中引用的所有需要​​的 DatabaseFields

All needed DatabaseFields referenced in FastReport file

有人知道如何获取 FastReport 报告所需的所有数据库字段吗?

背景: 通常我们报告的所有数据都直接来自 delphi,而不是通过直接的数据库连接。 我们有一个用于编辑快速报告文件的编辑器。我们想显示用户输入数据的报告预览。所以我们需要知道所有用到的数据集,以及报表需要的数据集的字段。

获取报告所需的数据集可以通过以下属性完成:

var
  rpReport: TfrxReport
begin
  rpReport.DataSets 

但是如何获取数据集字段的编号和名称呢?

每个 TfrxDataSet 后代都有 public FieldsCountGetFieldList 函数。

var
  fl: TStringList;

 fl := TStringList.Create;
 rpReport.DataSets[0].DataSet.GetFieldList(fl);

对我来说,它通过解析 .fr3 文件来工作,那是一个 xml 文件。

我使用以下正则表达式获取所有字段(包括表达式刚刚使用的字段):

mDatasetName + '\.&#34;(?<fieldname>[^&]+)&#34;'

其中 mDatasetName 是需要字段的数据集的名称。我通过集合得到的数据集的所有名称:

for I := 0 to rpReport.DataSets.Count - 1 do
  mDatasetName := rpReport.Datasets[I].DatasetName;