这里给大家提个醒: 以管理员身份运行.如果你想要使用中文版,需要在选择中文时,马上点一下compile,然后再选择Recompile all packages 再点一下compile

如果你打开fastReport后还是英文版,可以再次打开此程序,按上面红字操作一下就可以了,不需要重装.

delphi RzProgressBar1用法 delphi fastreport_数据集

 

 

下载地址:能看到这里的,应该不差包

一.配置好数据库,这个不是本文的重点,就不详述了.

delphi RzProgressBar1用法 delphi fastreport_字段_02

 

 

二.界面设计.大致如下图.略

三.使用报表控件与数据集建立连接.

  1.使用 TfrxDBDataset控件 连接数据集,这里有两个选择,一个来源于查询,一个来源于数据集,按业务需求 二选一

delphi RzProgressBar1用法 delphi fastreport_数据集_03

  2.使用 TfrxReport 控件 关联 TfrxDBDataset控件.从数据库连接算下来,相当于套了5个控件,才能把报表展示出来...简直了!

 

delphi RzProgressBar1用法 delphi fastreport_数据集_04

 

 四.数据表的别名设置.你最好在最开始时修改好,不然后期修改的话可能要费一些工夫.

  双击 frxDBDataset1 控件,即可弹出别名管理器

  

delphi RzProgressBar1用法 delphi fastreport_字段_05

 

 你也可以在 frxDBDataset1 左边属性面板的 FieldAliases属性中设置,这里是一个很重要的属性,日后代码操作中必不可少.

delphi RzProgressBar1用法 delphi fastreport_字段_06

 

 五.用报表向导建立一个报表(初学者推荐).

  1.双击 frxReport1 进入报表设计界面

  file---new...选择标准报表-ok

delphi RzProgressBar1用法 delphi fastreport_主数据_07

--设置数据集(一会默认)--next

delphi RzProgressBar1用法 delphi fastreport_字段_08

-选择用到的字段-- next

delphi RzProgressBar1用法 delphi fastreport_字段_09

 

分组设置--next

delphi RzProgressBar1用法 delphi fastreport_主数据_10

 

 

 格式设置--next

delphi RzProgressBar1用法 delphi fastreport_字段_11

 

样式设置--Finish

delphi RzProgressBar1用法 delphi fastreport_数据集_12

 

 六.报表的结构.

报表主要分为四部分结构,头和尾按业务需求来选用.务必搞清楚各部分的出现方式

delphi RzProgressBar1用法 delphi fastreport_数据集_13

 

各结构如果误删了,可以从左边的工具栏中,重新添加

 

 

delphi RzProgressBar1用法 delphi fastreport_字段_14

 

 

 

七.手动创建报表.

  这也是为什么我要先讲报表结构的原因;只有了解了报表结构,才能知道什么地方可以放什么数据.

  1.添加页首.新建的报表中是没有页首的,需要的动添加.

delphi RzProgressBar1用法 delphi fastreport_字段_15

 

  2.关联数据集.这里分两步.

    2.1 报表---数据-- 选择数据库

  

delphi RzProgressBar1用法 delphi fastreport_主数据_16

 

 

   点中左边面板上的

delphi RzProgressBar1用法 delphi fastreport_数据集_17

,此时鼠标会变成一个大 十字  ,后面跟着一个虚框,点在主数据上,这样主数据里面就插入了一个memo,同时,它还弹出了一个文本编辑器.我们在右边随便选中一个要显示的字段,就变成了这样:  

delphi RzProgressBar1用法 delphi fastreport_主数据_18

 

  然后我们点击预览.啊西吧!什么鬼!为什么会是空白?!明明有数据集是有数据的呀!

  2.2.指定数据集.原来是因为,我们还要再次指定数据集才可以正常显示:双击主数据右边的小图标进行指定,最终变为

delphi RzProgressBar1用法 delphi fastreport_主数据_19

就可以了,此时 我们再点预览就可以看到报表数据啦

 

 

  

delphi RzProgressBar1用法 delphi fastreport_主数据_20

 

 

 

 

  2.3Memo的复杂用法.这里需要注意:字符串连接不需要连接符

  (更正:下图中,6那里我点错字段了,应该点参考库存,因为规格型号不能计算)

delphi RzProgressBar1用法 delphi fastreport_主数据_21

 

 

 

  3.设计技巧.

    3.1先算好要展示几个字段,然后在主数据里插入一个memo,设置好字段值,然后复制出N个,再排列,设置好值,调整好列宽.就不用一个个插入啦

    3.2框选主数据里的所有字段,然后复制到页首里面,再一个个改为普通文字标题,这样就不用担心列宽与主数据列宽不一致了.

    3.3页首里的所有memo底部都应该要与页首重合,不然会与主数据产生间隙.顶部可以不重合,甚至还可以插入页码什么的,像这样(素材来源:学习大师)

    

delphi RzProgressBar1用法 delphi fastreport_数据集_22

    3.4主数据里的memo行高,如果是要制作表格格式的报表,最好行高与主数据高度一致,否则行数据之间会有间隙;

    3.5所有的memo默认都不是垂直居中,设置边框线后,下一个memo会被套用之前的边框线设置.

    3.6合理使用工具栏上的工具,更能事半功倍.

    3.7.所有结构都是可以拉伸高度的.除了主数据外,其他结构占的高度越大,数据显示得就越少.主数据拉伸的越高,行距就越大!  

  4.实用小技巧.

    4.1 隐藏  0 数据: 选择主数据里的字段,在左边设置HideZero为True;

    4.2 设置序号(行号): 在主数据里插入一个memo,设置文本里选择 [变量] -- [Line#];

    4.3 页码设置: 多关注变量这个选项卡     第 [Page#] 页,共 [TotalPages#] 页;

    4.4 可以自定义自己需要的格式:

      

delphi RzProgressBar1用法 delphi fastreport_字段_23

 

  4.5 隔行变色

  

delphi RzProgressBar1用法 delphi fastreport_字段_24

 

  4.6自动行高设置.

    4.6.1 、选择主数据,在左边面板找到stretched ,并设置为True 

    4.6.2、把主数据下的所有字段框选,设置属性 wordwrap为True ,stretchMode:smMaxHeight

  4.7 函数的使用 

    例一.参与计算的字段,要用尖括号.表示表达式运算的字符,要用中括号括起来

    错误:  [FormatDateTime('yyyy-mm-dd',[frxDBDataset1."日期"])]

    ---------------------------------------------------------------------------------------------

    正确: [FormatDateTime('yyyy-mm-dd',<frxDBDataset1."日期">)]

   例二:所有没有包含在中括号里的字符,都不会参与运算,会被当做字符串拼接显示出来

    错误: [Length(<申购清单."物料代码">)]-6

    正确: [Length(<申购清单."物料代码">)-6]

  例三: 中括号里面不能再有中括号

  错误:[copy(<申购清单."物料代码">,[Length(<申购清单."物料代码">)-5],6)]

  正确:[copy(<申购清单."物料代码">,Length(<申购清单."物料代码">)-5,6)]

   

八.分栏打印.实现一页打印两栏

  8.1  文件------页面设置

    

delphi RzProgressBar1用法 delphi fastreport_字段_25

 

 8.2 把页首里的标题,复制一份到右边.如果没有这一步,右边的数据将不会显示标题

  

delphi RzProgressBar1用法 delphi fastreport_数据集_26

 

 

九.制作卡片式标签.(素材来源:学习大师)

  9.1先看效果图,这里分了两栏

  

delphi RzProgressBar1用法 delphi fastreport_数据集_27

 

  9.2主数据图:

  

delphi RzProgressBar1用法 delphi fastreport_字段_28

 

   9.3 绘制边框.

  

delphi RzProgressBar1用法 delphi fastreport_数据集_29

绘制后要把边框置于底层,不然会挡住主数据,导致点选不到主数据.

delphi RzProgressBar1用法 delphi fastreport_数据集_30

 

 

 十.每页小计.这里介绍两种方法

  10.1 文本对象法.在页尾插入

delphi RzProgressBar1用法 delphi fastreport_数据集_31

.    

delphi RzProgressBar1用法 delphi fastreport_数据集_32

  推荐使用这种方法,因为这种方法还可以设置数字格式 

  干货:

    数字在自定义格式时,与EXCEL的自定义格式很像 :  正数;负数;0

    如果你不想让 0 展现在报表上,可以这么写:  0;-0;''     也就是把0变为空.

    如果你只想让数字保留两位小数,可以这么写: 0.##;-0.##;0

  

delphi RzProgressBar1用法 delphi fastreport_字段_33

 

   10.2 在左边面版中找到

delphi RzProgressBar1用法 delphi fastreport_数据集_34

系统文本,插入到页尾中.设置你需要的功能(表达式是可选的)    

delphi RzProgressBar1用法 delphi fastreport_字段_35

 

   确定后,再双击这个memo,你会发现它变成了文本.此时你可以在这串文本前后拼接其他字符,比如 本页小计 :  什么的.

  

delphi RzProgressBar1用法 delphi fastreport_主数据_36

 

 

十一.打印报表

  

delphi RzProgressBar1用法 delphi fastreport_字段_37

procedure TForm1.打印Click(Sender: TObject);
begin
  //断开与数据集的联系,否则会出现逐行扫描的现象
  DM.FDQuery1.DisableControls;
//frxReport1.PrintOptions.Printer := 打印机名称;  //设置打印机
//不显示打印机调用界面,不需要用户确认,直接使用默认打印机进行打印
  //   frxReport1.PrintOptions.ShowDialog :=False;

  frxReport1.PrepareReport();   //准备报表
  frxReport1.Print;     //调出打印机界面

  //恢复与数据集的联系
  DM.FDQuery1.EnableControls;
//  使数据集跳到第一行
  DM.FDQuery1.First;
end;

 

 十二.打印预览

  

procedure TForm1.预览Click(Sender: TObject);
begin
   //断开与数据集的联系,否则会出现逐行扫描的现象
  DM.FDQuery1.DisableControls;
  //报表预览
  frxReport1.ShowReport();
  //恢复与数据集的联系
  DM.FDQuery1.EnableControls;
  //  使数据集跳到第一行
  DM.FDQuery1.First;
end;

 

十三.使用户在运行程序时,可以自定义报表.

  

delphi RzProgressBar1用法 delphi fastreport_主数据_38

 

   在这之前,我们需要插入一个

delphi RzProgressBar1用法 delphi fastreport_字段_39

TfrxDesigner 控件,这货只是个工具插件,用 frxReport1.DesignReport()方法调用即可,不用理它

 

procedure TForm1.报表设计Click(Sender: TObject);
begin
  frxReport1.DesignReport();
end;

 

 十四.让用户切换报表模板

  

frxReport1.LoadFromFile(报表路径+文件名);  //后缀名 .fr3

 

 十五.按条件求和.

  案例:求和 [字段A]  值为  '1'  的项

delphi RzProgressBar1用法 delphi fastreport_主数据_40