delphi xe 10.3 用FastReport打印预览当前记录

时间:2024-03-19 08:39:16

以下在WINDOWS10  + DELPHI XE 10.3   FireDAC +SQL SERVER 2008   下通过:

第一步,创建如下表单:

delphi xe 10.3 用FastReport打印预览当前记录

第二步  拖入以下几个控件:

delphi xe 10.3 用FastReport打印预览当前记录

 

frxDBDataset1.DataSet:=SalesTable;

双击: FrxReport1打开FastReport设计器;如下

delphi xe 10.3 用FastReport打印预览当前记录

在窗口顶部   报表(R)下选择  ‘数据’   弹出如下图:

delphi xe 10.3 用FastReport打印预览当前记录

勾选 住  FRXBDATASET1;按确定。

窗口右侧有 数据树如图 

delphi xe 10.3 用FastReport打印预览当前记录

delphi xe 10.3 用FastReport打印预览当前记录

左侧有点击插入BRAND 页头,页尾,主数据,报表抬头;如下

 

delphi xe 10.3 用FastReport打印预览当前记录

把右侧 数据树 数据  下的 FRXDBDataSet1下的字段 ,SalesID,SalesPersonID.等拉到MasterData,如下图:

delphi xe 10.3 用FastReport打印预览当前记录

为了查看即时效果,可打开 菜单 ‘文件(F)‘下的’预览‘。效果如下图:

delphi xe 10.3 用FastReport打印预览当前记录

可看出缺少 标题 ;

再次选择MasterDATAS下的字段名,复到Pageheader下,如图:

delphi xe 10.3 用FastReport打印预览当前记录

双击PageHeader下的各字段名,修改为中文名字

delphi xe 10.3 用FastReport打印预览当前记录

还可以继续美化:左侧工具栏倒数第二个,插入“线型对象” ,在标题下划一条横线;在MasterDatas下的各字段下划一条横线如下图:

delphi xe 10.3 用FastReport打印预览当前记录

好好看下图的LINE;

delphi xe 10.3 用FastReport打印预览当前记录

 

按  文件(F)菜单下的预览结果如下图:

delphi xe 10.3 用FastReport打印预览当前记录

 

达到预期效果;

按  文件(F)菜单下的 另存为,保到一个指定的文件夹里。比如C:\oz\  ,文件名为test.fr3;

双击  “预览” 按钮;输入 以下代码:

procedure TForm1.Button1Click(Sender: TObject);
begin
FDMemTable1.Close();
FDMemTable1.FieldDefs.Clear();
FDMemTable1.FieldDefs.Add('salesID', ftInteger, 0, True);
FDMemTable1.FieldDefs.Add('salesPersonID', ftInteger, 0, True);
FDMemTable1.FieldDefs.Add('CustomerID', ftInteger, 0, True);
FDMemTable1.FieldDefs.Add('productID', ftInteger, 0, True);
FDMemTable1.FieldDefs.Add('Quantity', ftString, 20, false);//建立一个与SalesTable一样的表
FDMemTable1.CreateDataSet();//建立空数据集
FDMemTable1.AppendRecord([
                        SalesTable.FieldByName('salesID').Value,
                        SalesTable.FieldByName('salesPersonID').Value,
                        SalesTable.FieldByName('CustomerID').Value,
                        SalesTable.FieldByName('productID').Value,
                        SalesTable.FieldByName('Quantity').Value]);

//把SalesTable表的当前字段复制到FDMemTable1;

FDMemTable2.Active:=false;
FDMemTable2.Data:= FDMemTable1.Data ;//把FDMemTable1.Data复制给FDMemTable2.Data

frxDBDataset1.DataSet:=FDMemTable2;//把FDMemTable2赋值给frxDBDataset1.DataSet;//此举完成了对报表数据集的代替了。

frxReport1.LoadFromFile('C:\oz\test.fr3') ;//加载test.fr3
frxReport1.showReport;//预览
end;


 


end.