Delphi 如何在FastReport中动态分配数据集?
我使用FastReport Designer创建了一个报告,并使用Delphi 6调用它。但是Delphi 如何在FastReport中动态分配数据集?,delphi,dataset,fastreport,Delphi,Dataset,Fastreport,我使用FastReport Designer创建了一个报告,并使用Delphi 6调用它。但是DataSet用于MasterData,并且在设计时不分配字段。我想在运行时基于所选的数据集设置这些属性。我该怎么做?在调用预览/打印/设计之前,如何在Delphi中访问主数据的数据集?在重新打印前在FRXReport1中添加了以下代码 t := frxReport1.FindObject('MasterData1') as TfrxMasterData; //if Assigned(t) th
DataSet
用于MasterData
,并且在设计时不分配字段。我想在运行时基于所选的数据集设置这些属性。我该怎么做?在调用预览/打印/设计之前,如何在Delphi中访问主数据
的数据集
?在重新打印前在FRXReport1中添加了以下代码
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 designer中的“数据”选项卡)
如果您试图使用在应用程序中定义的数据集(例如,在数据模块中定义的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;
procedure frxReport1OnStartReport(Sender: TfrxComponent);
begin
MasterData1.Dataset := <ADOQuery1."ADOQuery1">;
end;
您分配给frxDbDataset的任何内容都将由主波段在报告中打印
如果使用FastReport designer直接在报表中定义数据集;那么一切都在你的报告里了。只需打开fastreport designer并执行以下操作:
1-转到“数据”选项卡并定义数据集(例如AdoQuery1)。
2-从报告树窗格中选择报告对象。
3-在对象检查器中,转到“事件”选项卡。
4-选择合适的活动;OnStartReport对您的工作来说是一件好事。双击它打开代码编辑器。
5-现在,您可以使用PascalScript代码将“数据”选项卡中定义的数据集分配给主数据区。大概是这样的:
if MyOption = 1 then
frxDbDataset1.Dataset := AdoDataset1
else
frxDbDataset1.Dataset := AdoDataset2;
procedure frxReport1OnStartReport(Sender: TfrxComponent);
begin
MasterData1.Dataset := <ADOQuery1."ADOQuery1">;
end;
程序FRXReport1启动报告(发送方:TFRX组件);
开始
MasterData1.数据集:=;
结束;
如果您使用的是FastReport 3+,则可以将数据库组件放置在报告中。您只需要提供数据库连接并从应用程序运行designer
您可以定义变量,从应用程序传递变量,然后运行.fr3报告文件。您的解决方案在使用FastReports4/delphi XE2时不起作用。如果设置StartNewPage,我可以多次看到打印的标注栏,但是我看不到其中的任何数据。是否有其他步骤来定义它的字段(动态,忽略数据类型)?