【问题标题】:How to assign dataset dynamically in FastReport?如何在 FastReport 中动态分配数据集?
【发布时间】:2011-05-03 04:38:45
【问题描述】:

我已经使用 FastReport Designer 创建了一个报表,并使用 Delphi 6 调用它。但是 DataSet 用于 MasterData 并且在设计时没有分配字段。我想在运行时根据选定的DataSet 设置这些属性。我怎样才能做到这一点?在调用预览/打印/设计之前,如何在 Delphi 中访问 MasterDataDataSet?在frxReport1BeforePrint 中添加了以下代码。

  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;

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

【问题讨论】:

    标签: delphi dataset fastreport


    【解决方案1】:

    您应该首先指定您是尝试使用在您的应用程序中定义的数据集,还是直接在您的报表中定义的数据集(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 的任何内容都将由 master-band 打印在您的报告中。

    如果您在报表中直接定义数据集,请使用 FastReport 设计器;那么一切都在您的报告中。只需打开 fastreport 设计器并执行以下操作:

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

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

    【讨论】:

    • 您的解决方案无法使用 FastReports4/delphi XE2 如果我设置 StartNewPage,我可以看到该带被打印了很多次,但是我看不到其中的任何数据。是否有额外的步骤来为其定义字段(动态地,忽略数据类型)?
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-24
      • 2012-02-18
      • 1970-01-01
      • 1970-01-01
      • 2012-06-04
      • 1970-01-01
      • 1970-01-01
      • 2012-11-08
      相关资源
      最近更新 更多