FastReport 文件中引用的所有需要的 DatabaseFields
All needed DatabaseFields referenced in FastReport file
有人知道如何获取 FastReport 报告所需的所有数据库字段吗?
背景:
通常我们报告的所有数据都直接来自 delphi,而不是通过直接的数据库连接。
我们有一个用于编辑快速报告文件的编辑器。我们想显示用户输入数据的报告预览。所以我们需要知道所有用到的数据集,以及报表需要的数据集的字段。
获取报告所需的数据集可以通过以下属性完成:
var
rpReport: TfrxReport
begin
rpReport.DataSets
但是如何获取数据集字段的编号和名称呢?
每个 TfrxDataSet 后代都有 public FieldsCount 和 GetFieldList 函数。
var
fl: TStringList;
fl := TStringList.Create;
rpReport.DataSets[0].DataSet.GetFieldList(fl);
对我来说,它通过解析 .fr3 文件来工作,那是一个 xml 文件。
我使用以下正则表达式获取所有字段(包括表达式刚刚使用的字段):
mDatasetName + '\."(?<fieldname>[^&]+)"'
其中 mDatasetName 是需要字段的数据集的名称。我通过集合得到的数据集的所有名称:
for I := 0 to rpReport.DataSets.Count - 1 do
mDatasetName := rpReport.Datasets[I].DatasetName;
有人知道如何获取 FastReport 报告所需的所有数据库字段吗?
背景: 通常我们报告的所有数据都直接来自 delphi,而不是通过直接的数据库连接。 我们有一个用于编辑快速报告文件的编辑器。我们想显示用户输入数据的报告预览。所以我们需要知道所有用到的数据集,以及报表需要的数据集的字段。
获取报告所需的数据集可以通过以下属性完成:
var
rpReport: TfrxReport
begin
rpReport.DataSets
但是如何获取数据集字段的编号和名称呢?
每个 TfrxDataSet 后代都有 public FieldsCount 和 GetFieldList 函数。
var
fl: TStringList;
fl := TStringList.Create;
rpReport.DataSets[0].DataSet.GetFieldList(fl);
对我来说,它通过解析 .fr3 文件来工作,那是一个 xml 文件。
我使用以下正则表达式获取所有字段(包括表达式刚刚使用的字段):
mDatasetName + '\."(?<fieldname>[^&]+)"'
其中 mDatasetName 是需要字段的数据集的名称。我通过集合得到的数据集的所有名称:
for I := 0 to rpReport.DataSets.Count - 1 do
mDatasetName := rpReport.Datasets[I].DatasetName;