10

我已经使用 FastReport Designer 创建了一个报表,并使用 Delphi 6 调用它。但是DataSetMasterData设计时并没有分配字段。我想在运行时根据选定的DataSet. 我怎样才能做到这一点?在调用预览/打印/设计之前,如何访问 Delphi 中DataSet的?MasterDatafrxReport1BeforePrint.

  t := frxReport1.FindObject('MasterData1') as TfrxMasterData;
  //if Assigned(t) then
    //t.DataSet := frxIBODataset1;

  m := frxReport1.FindObject('mTenderType') as TfrxMemoView;
  if Assigned(m) then
  begin
    m.DataSet := frxIBODataset1;
    m.DataField := 'ACCOUNTNAME';
    m.Text := '[frxIBODataset1."ACCOUNTNAME"]';
  end;

但我需要在调用打印/设计/预览之前设置这些属性。任何帮助表示赞赏。

4

2 回答 2

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 设计器;那么一切都在您的报告中。只需打开 fastreport 设计器并执行以下操作:

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

procedure frxReport1OnStartReport(Sender: TfrxComponent);
begin
  MasterData1.Dataset := <ADOQuery1."ADOQuery1">;      
end;
于 2010-10-31T23:32:53.413 回答
0

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

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

于 2010-11-01T16:13:03.173 回答