如何在FastReport中动态分配数据集?

时间:2010-10-31 21:48:51

标签: delphi dataset fastreport

我使用FastReport Designer创建了一个报告,并使用Delphi 6调用它。但是DataSet的{​​{1}}和字段在设计时没有被识别。我想根据选定的MasterData在运行时设置这些属性。我怎样才能做到这一点?在调用预览/打印/设计之前,如何访问Delphi中DataSet的{​​{1}}?在DataSet中添加了以下代码。

MasterData

但我需要在调用print / design / preview之前设置这些属性。任何帮助表示赞赏。

2 个答案:

答案 0 :(得分:2)

您应首先指定是否尝试使用应用程序中定义的数据集,或直接在报表中定义的数据集(FastReport设计器中的“数据”选项卡)?

如果您尝试使用在应用程序中定义的数据集(例如,在您的某个数据模块中定义的AdoDataset实例),出于此目的,您不必将MasterBand绑定到数据集。动态。在报告中,您的MasterBand在设计时绑定到TfrxDbDataset实例。在运行时,您的frxDbDataset实例可以连接到项目中的任何数据集。

这是怎么回事:

1-在表单或数据模块上删除frxReport组件和frxDbDataset组件。 2-在报表设计器中,转到“数据集”部分,并将可用的frxDbDataset添加到报表的数据集列表中。 3-添加主数据带,并将frxDbDataset分配给其Dataset属性。 4-现在在代码中,在显示或准备报告之前,您可以编写如下内容:

  if MyOption = 1 then
    frxDbDataset1.Dataset := AdoDataset1
  else
    frxDbDataset1.Dataset := AdoDataset2;

您分配给frxDbDataset的任何内容都将由报告中的主带打印。

如果要直接在报表中定义数据集,请使用FastReport设计器;然后一切都在您的报告中。只需打开快速报告设计师并执行此操作:

1-转到“数据”选项卡并定义数据集(例如AdoQuery1)。 2-从“报告树”窗格中选择“报告对象” 3-在对象检查器中,转到“事件”选项卡。 4-选择适当的活动; OnStartReport对您的工作来说是一件好事。双击它以打开代码编辑器。 5-现在,您可以使用PascalScript代码将data-tab中定义的数据集分配给主数据带。像这样:

procedure frxReport1OnStartReport(Sender: TfrxComponent);
begin
  MasterData1.Dataset := <ADOQuery1."ADOQuery1">;      
end;

答案 1 :(得分:0)

如果您使用的是FastReport 3+,则可以放置数据库组件 inside 报告。只有您需要的是提供数据库连接并从您的应用程序中运行设计器。

您可以定义变量,从应用程序传递它们并运行.fr3报告文件。