gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 14:44:36 26 4
gpt4 key购买 nike

我使用 FastReport Designer 创建了一个报表,并使用 Delphi 6 调用它。但是 MasterDataDataSet 和字段在设计时未分配。我想根据所选的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;

但我需要在调用打印/设计/预览之前设置这些属性。如有任何帮助,我们将不胜感激。

最佳答案

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

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

情况如下:

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

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

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

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

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

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

关于delphi - 如何在FastReport中动态分配数据集?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4065317/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com