以下在WINDOWS10 + DELPHI XE 10.3 FireDAC +SQL SERVER 2008 下通过:
第一步,创建如下表单:
第二步 拖入以下几个控件:
frxDBDataset1.DataSet:=SalesTable;
双击: FrxReport1打开FastReport设计器;如下
在窗口顶部 报表(R)下选择 ‘数据’ 弹出如下图:
勾选 住 FRXBDATASET1;按确定。
窗口右侧有 数据树如图
左侧有点击插入BRAND 页头,页尾,主数据,报表抬头;如下
把右侧 数据树 数据 下的 FRXDBDataSet1下的字段 ,SalesID,SalesPersonID.等拉到MasterData,如下图:
为了查看即时效果,可打开 菜单 ‘文件(F)‘下的’预览‘。效果如下图:
可看出缺少 标题 ;
再次选择MasterDATAS下的字段名,复到Pageheader下,如图:
双击PageHeader下的各字段名,修改为中文名字
还可以继续美化:左侧工具栏倒数第二个,插入“线型对象” ,在标题下划一条横线;在MasterDatas下的各字段下划一条横线如下图:
好好看下图的LINE;
按 文件(F)菜单下的预览结果如下图:
达到预期效果;
按 文件(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.