fastreport 初级教程之嵌套报表
- 格式:pdf
- 大小:666.09 KB
- 文档页数:8
FastReport打印模板制作手册常用功能汇总一.常用控件文本框:输入文字或表达式表格:设置表格的行列数,输入数字或表达式子报表:放置子报表后,系统会自动增加一个页面,你可以在此页面上设计需要的报表。
系统在打印处理时,先按主报表打印,当碰到子报表时会自动转入子报表的页面进行打印处理,完成后继续执行主报表打印的工作,所以我们又称之为嵌套报表。
复选框:根据布尔表达式是否为ture来显示是否√(如性别男女)条形码:绑定扫描码(如静滴单),一般Type为Code128交叉表:Matrix页面设置:设置纸张大小及页边距边框设置:设置是否显示上下左右边框以及边框线条的设置边框宽度:下拉三角可以选择边框宽度设置边框样式设置:下拉三角可以选择边框样式设置二.常用报表栏报表标题区(ReportTitle):仅在第一页显示在纸张的上部。
一般用于打印报表的标题等信息。
报表合计(ReprotSummary):仅显示在所有数据的最后末尾。
一般用于打印统计信息等。
页眉(PageHeader):显示在每页的最上部。
通过设置你可以让它置于报表抬头之上或者之下。
一般用于打印页眉信息等。
数据区(data):绑定数据源显示数据。
数据首(Header):显示在所有数据源的最上部,仅打印一次。
一般用于显示相关摘要信息,与页眉的区别是当该页无数据时,数据首的内容不显示且仅显示一次。
数据尾(Footer):显示在所有数据源的最下部,仅打印一次。
一般用于显示所有数据的合计信息。
栏首(ColumnHeader):显示在每页数据源的上部,它在每页均显示。
因此一般用于打印数据源字段的栏目信息。
栏尾(ColumnHeader):显示在每页数据源的下部,它在每页均显示。
一般可用于统计显示每页数据的页合计信息。
分组页眉(GroupHeader):用于显示分组数据,在每一个分组开始显示。
分组页脚(GroupFooter):与群组首一一对应。
一般用于显示分组数据的统计信息。
安易信息系统FastReport报表打印格式操作手册目录FastReport对象 (2)“Text”对象 (3)“Band”对象 (7)“Image”对象 (9)“SubReport”对象 (10)“Line”对象 (12)“CheckBox”对象 (12)“RichText”对象 (12)“OLE”对象 (13)“Chart”对象 (14)“Shape”对象 (16)“Barcode”对象 (17)“R ichText 2.0”对象 (18)设计器 (18)使用控制键 (19)使用鼠标 (20)报表选项 (20)页面选项 (20)设计器选项 (24)对象观测器 (26)“插入数据字段”窗口 (26)数据字典 (28)体现式编辑器 (33)工具栏 (36)“原则”工具栏 (36)“格式”工具栏 (37)“边框”工具栏 (38)“对齐”工具栏 (38)对象旳属性和措施 (39)解释器旳使用 (46)创立ANYIHIS旳FastReport报表 (47)FastReport对象图标名称描述Text 提供里面涉及多行文本旳矩形框。
文本容许涉及变量。
Band 条状区域。
定义区域涉及旳最后报表旳位置。
Picture 显示BMP, ICO, WMF, EMF和JPG图像格式。
来源可以是BLOB 字段。
不连接到FR.inc就不能在FastReport中使用JPG格式。
SubReport 用于创立子报表。
当你插入这个对象到一种报表时, 你将看到在你旳报表中增长一种新页面。
Line 在报表上画垂直或水平线条。
Shadowed text 提供涉及在一种矩形边框中旳多行文本, 并可设立阴影和(或者)渐变色填充。
用于打印标签。
Barcode 用条形码显示数据。
Shape 容许在报表中插入几何图形(矩形, 圆角矩形, 椭圆, 三角形)。
CheckBox 用检查框或X来显示逻辑数据。
RichText 用于在报表中插入RTF文档。
fastreport使用手册
FastReport(下称FR)是一款功能强大的报表工具,适用于各种数据
库或多种数据来源,可为企业提供高度定制的报表服务。
本篇文章将
对FR的使用手册进行详细介绍,以帮助用户快速掌握FR的基本操作。
一、安装与配置
1. 下载并安装FastReport
2. 配置FR参数:连接数据库、设定编码格式等。
二、创建报表
1. 新建报表文件
2. 设计报表:增加页面、定义页面属性、添加控件(表格、文本框、
图片、图表等),设置控件属性(数据源、格式、颜色、字体等)。
三、数据源
1. 连接数据库
2. 执行SQL语句并查看数据结果
3. 绑定数据到控件上,实现数据绑定功能。
四、脚本
1. 打开脚本编辑器
2. 添加脚本:对数据进行操作、增加控制语句、设定数据格式等。
五、导出报表
1. 通过预览功能查看报表内容
2. 导出报表:保存为PDF、Excel、Word等格式。
六、常见问题
1. 对数据源进行修改后,如何更新报表?
2. 如何设置分页?
3. 如何对报表进行格式化?
以上即为FR使用手册的主要内容,希望读者通过本篇文章的帮助,能
够更加熟练地使用FR,为企业的报表服务提供更加高效和质量的保障。
FastReport-程序员手册一、使用Tfr某Report组件工作1、加载并存储报表默认情况下,报表窗体同项目窗体构存储在同一个DFM文件中。
多数情况下,无须再操作,因而你就不必采用特殊方法加载报表。
如果你决定在文件中存储报表窗体或者是数据库的Blob字段(他提供了非常大的弹性,你能够在非编译程序中修改),你必须使用“Tfr某Report”提供的加载和存储方法。
functionLoadFromFile(contFileName:String;E某ceptionIfNotFound:Boolean=Fale):Boolean;从一个给定名字文件中加载报表。
如果第二个参数等于“True”并且文件没找到,那么他会触发一个异常。
如果文件加载成功,他返回“True”。
procedureLoadFromStream(Stream:TStream);从流中加载报表。
procedureSaveToFile(contFileName:String);用特殊名称文件存储报表。
procedureSaveToStream(Stream:TStream);把报表存在流中。
例如:Pacal:fr某Report1.LoadFromFile('c:\\1.fr3');fr某Report1.SaveToFile('c:\\2.fr3');C++:fr某Report1->LoadFromFile(\fr某Report1->SaveToFile(\2.设计报表通过“Tfr某Report.DeignReport”方法调用报表设计器。
你必须在你的项目中包含报表设计器(必要条件是:要么使用“Tfr某Deigner”组件,要么增加“fr某Degn”单元到ue列表)“DeigReport”方法接受两个默认参数:procedureDeignReport(Modal:Boolean=True;MDIChild:Boolean=Fal e);Modal参数决定设计器是否被模态,MDIChild参数允许把设计器窗体作为一个MDI子窗体。
初级教程之报表设计器环境报表组件在开发环境中,可以通过鼠标双击TfrxReport组件,打开报表设计器环境。
设计器窗口提供给用户全部有关报表设计的工具,并同时提供预览功能。
报表设计器界面新颖。
包含几个工具栏,并且工具栏可以停靠镶嵌在任何你想停靠的地方,并随设计器其他配置属性保存在一个.Ini文件中,当再次打开时,恢复设计器的配置属性。
为了提供给用户运行期设计报表的功能,应该再添加“TfrxDesigner”或“frxDesgn”单元到Uses列表中。
这样用户就可以在运行期修改报表格式,又可以修改已经生成的报表内容信息。
注:根据报表的需要,你应该还需要添加其他的一些组件到表单上。
其他组件说明不在此介绍。
2图中标号说明:1——报表设计区域2——菜单栏3——工具栏4——报表对象工具栏5——报表分页标签6——报表树窗口7——对象属性窗口8——数据树窗口。
可以从此窗口拖曳到报表窗口9——尺标。
10——状态条13456789101.1、控制键控制键描述Ctrl+O“文件|打开…”菜单命令Ctrl+S“文件|保存”菜单命令Ctrl+P“文件|预览”菜单命令Ctrl+Z“编辑|撤销”菜单命令Ctrl+C“编辑|复制”菜单命令Ctrl+V“编辑|粘贴”菜单命令Ctrl+X“编辑|剪切”菜单命令Ctrl+A“编辑|全选”菜单命令Arrow,Tab对象切换Del删除被选择的对象Enter打开对象编辑器Shift+arrows改变对象的大小Ctrl+arrows移动对象位置Alt+arrows移动对象到附近对象的位置1.2、鼠标操作操作描述左键选择组件对象;添加新的组件对象;移动组件对象;改变组件的大小;对选中的对象通过组件的黑色方块可以改变组件的大小。
右键弹出选择组件对象的浮动菜单双击打开对象编辑器;通过在组件的中间位置双击鼠标左键,打开属性对话窗口。
鼠标滚轮滚动报表。
Shift+左键多选组件对象Ctrl+右键当你按着鼠标左键移动鼠标时,在窗口上划出一道方形窗口。
fastreport c#初级教程之报表设计器环境报表组件在开发环境中,可以通过鼠标双击TfrxReport组件,打开报表设计器环境。
设计器窗口提供给用户全部有关报表设计的工具,并同时提供预览功能。
报表设计器界面新颖。
包含几个工具栏,并且工具栏可以停靠镶嵌在任何你想停靠的地方,并随设计器其他配置属性保存在一个.Ini文件中,当再次打开时,恢复设计器的配置属性。
为了提供给用户运行期设计报表的功能,应该再添加“TfrxDesigner”或“frxDesgn”单元到Uses列表中。
这样用户就可以在运行期修改报表格式,又可以修改已经生成的报表内容信息。
注:根据报表的需要,你应该还需要添加其他的一些组件到表单上。
其他组件说明不在此介绍。
2图中标号说明:1——报表设计区域2——菜单栏3——工具栏4——报表对象工具栏5——报表分页标签6——报表树窗口7——对象属性窗口8——数据树窗口。
可以从此窗口拖曳到报表窗口9——尺标。
10——状态条13456789101.1、控制键控制键描述Ctrl+O“文件|打开…”菜单命令Ctrl+S“文件|保存”菜单命令Ctrl+P“文件|预览”菜单命令Ctrl+Z“编辑|撤销”菜单命令Ctrl+C“编辑|复制”菜单命令Ctrl+V“编辑|粘贴”菜单命令Ctrl+X“编辑|剪切”菜单命令Ctrl+A“编辑|全选”菜单命令Arrow,Tab对象切换Del删除被选择的对象Enter打开对象编辑器Shift+arrows改变对象的大小Ctrl+arrows移动对象位置Alt+arrows移动对象到附近对象的位置1.2、鼠标操作操作描述左键选择组件对象;添加新的组件对象;移动组件对象;改变组件的大小;对选中的对象通过组件的黑色方块可以改变组件的大小。
右键弹出选择组件对象的浮动菜单双击打开对象编辑器;通过在组件的中间位置双击鼠标左键,打开属性对话窗口。
鼠标滚轮滚动报表。
Shift+左键多选组件对象Ctrl+右键当你按着鼠标左键移动鼠标时,在窗口上划出一道方形窗口。
FastReport报表设计(仔细看)FastReport报表设计2011-06-16 16:56:19| 分类: |举报|字号⽬录5.1 前⾔汽车业务管理系统(VBMS)使⽤FastReport3.0报表系统设计报表。
本⽂主要描述使⽤FastReport设计报表的基本概念、使⽤⽅法、设计技巧和范例,不是FastReport的⽤户⼿册因此并不针对每个细节进⾏阐述。
⽴⾜于建⽴设计报表的概念和实⽤技巧范例的讲解,⾯对的是具有⼀定计算机操作⽔平的⽤户。
在VBMS中使⽤FastReport设计报表应该掌握以下知识:1、熟悉SQL语⾔,为设计报表准备数据源。
2、掌握VBMS的数据结构,可参考相关资料。
3、掌握FastReport报表的设计使⽤⽅法。
体系结构学习报表设计前应当⾸先弄清楚VBMS系统与FastReport报表设计之间的关系。
报表设计的⽬的是将VBMS数据库(Firebird1.5)中的数据按照需要的视图⽅式显⽰、统计出来,并且可以打印、导出。
VBMS数据库与VBMS管理系统以及FastReport报表设计之间的关系是:Firebird数据库系统是报表的数据源,它存储着客户的业务数据。
但该数据的存储⽅式并不⼀定是客户希望直接看到的。
VBMS管理系统是中间层,它负责连接Firebird数据库和FastReport报表系统,将数据库信息(例如数据库的位置)传⼊到报表系统中供设计报表时使⽤。
FastReport报表系统是报表设计的主体,它负责接收或创建数据源,通过设计报表完成需要的功能。
因此在VBMS管理系统的打印模块中存在两种数据源:⼀种是VBMS 系统数据源,即在各模块中将设计好的数据源传⼊到打印模块中。
优点是⽆须⽤户⼲预使⽤⽅便,缺点是不够灵活,更改数据源需要升级程序。
例如各类单据的打印报表采⽤的就是系统数据源。
另⼀种是⾃⾏设计数据源,功能强⼤但对⽤户的要求较⾼。
例如报表中⼼中的各类报表。
设计步骤完成⼀张报表的设计主要包括以下⼏个步骤:1、确定报表的需求,查阅VBMS关于数据库结构的⽂档,确认该需求的所有内容在VBMS中均有数据字段记录(即VBMS必须记录了相关数据,否则报表设计⽆从谈起)。
birt报表初级教程之嵌套报表嵌套报表嵌套报表其实是一种设计技巧的应用,类似编码过程中的模块化设计。
当报表的复杂程度让设计者开始觉得逻辑混乱的时候,可以使用嵌套报表设计方法,将报表拆分为多个不同的设计页面,然后使用一个总的页面将这些设计页面整合起来展现。
此外,嵌套报表有时候也会用于主从结构的实现,通过逐层嵌套,可以实现无限层次的主从结构数据展现。
本例,我们将每个客户的信息包括客户表中基本的信息以及他们的订单信息,在同一张表中按客户一一列出来,所使用的就是嵌套报表。
报表名我们定为:nestingTab.rptdesign构建数据源本例我们使用BIRT自带的数据源,在新建数据源选择数据源类型为默认的第一项:Classic Model Inc,Sample Database数据库驱动类别;org.eclipse.birt.report.data.oda.sampledb.Driver(ClassicModels Inc.SampleDB Driver);URL:jdbc:classicmodels:sampledb构建数据集本例我们需要建立2个数据集:1.建立数据集payments,所用SQL语句:(这里我们加入条件选择订单大于150000)select CUSTOMERNUMBER,sum(AMOUNT)amountfrom CLASSICMODELS.PAYMENTSgroup by CUSTOMERNUMBERhaving sum(AMOUNT)>150000order by amount desc2.建立数据集customers:所用SQL语句:select*from CLASSICMODELS.CUSTOMERS whereCLASSICMODELS.CUSTOMERS.CUSTOMERNUMBER=?输入SQL语句后,还要在数据集编辑窗口选择Parameters选项。
双击默认参数Pram1或者选择“Edit”,弹出如下窗口:输入:Name:CustID;Default Value:103;其它默认完成后,在Preview Result选项中就可看见结果预览:布局嵌套报表1.同上例,先在布局编辑器中建立一个1列2行的Grid。
Delphi FastReport报表常用方法1.单据中有多行数据,但预览时只显示部分内容,或者打印内容行与行之间有间隔OR属性中:设置RowCount=0,Start New Page为False;Stretched为True.说明:RowCount:控制总共打印几行;RowCount=0是打印全部;Start New Page:打印前先跳页;每页打印一行;Stretch:表身自动伸缩根据表身内容;2.在打印中设置金额或数量的小数位数FASTREPOR属性中:使用DisplayFormat(数据显示格式)——数字——1234.50%2.0f:以整数形式显示;%2.2f:显示两位小数;%2.3f:显示三位小数位,可根据情况进行调整。
3.在打印中设置日期/时间的格式FASTREPOR属性中:使用DisplayFormat(数据显示格式)——日期/时间——11.28.2002mm.dd.yyyy:显示月.日.年mm.dd:显示月.日mm:显示两位的月4.当栏位的值为零时显示为空FASTREPOR属性中:设置HideZeros(数字前面的0是否显示)为True5.自动换行1)选择数据单元进行群组;2)StretchMode为smMaxHtight;WordWrap为True;Stretched为True.说明:StretchMode:对象伸缩的行为;WordWrap:文本是否自动换行;6.合计[SUM(<进/销/退/折表身档."AMTN_NET">,MasterData2)]7.每页合计将定义好的合计函数放到‘栏尾’中即可。
8.全表合计将定义好的合计函数放到‘报表合计’中即可。
9.金额大写在报表设计中使用函数:ConbertNumToChinese()合计金额大写:[ConvertNumToChinese(SUM(<进/销/退/折表身档."AMTN_NET">,MasterData2))]负数合计金额大写:[ConvertNumToChinese(Abs(SUM(<进/销/退/折表身档."AMTN_NET">,MasterData2)))]10.报表中打印行数在报表设计中使用变量——系统变量Line#11.连打1)单据——速查,查出要打印的单据;2)打印——查询数据——预览——打印,选择多张单据进行连打。
using System;using System.Data;using ponentModel;using FastReport;namespace cx{///<summary>/// Summary description for FrxDataSet.///</summary>public class FrxDataTable : DataTable{private int nItem;TfrxUserDataSetClass m_ds;private DataTable m_ChildTable;public new string TableName{get { return m_; }}public IfrxDataSet FrxTable{get { return m_ds as IfrxDataSet; }}private void constructor(string name){m_ChildTable = null;m_ds = new TfrxUserDataSetClass();m_ds.OnCheckEOF += newIfrxUserDataSetEvents_OnCheckEOFEventHandler(OnCheckEOFEventHandler); m_ds.OnGetValue += newIfrxUserDataSetEvents_OnGetValueEventHandler(OnGetValueHandler);m_ds.OnFirst += newIfrxUserDataSetEvents_OnFirstEventHandler(OnFirstEventHandler);m_ds.OnNext += newIfrxUserDataSetEvents_OnNextEventHandler(OnNextEventHandler);m_ds.OnPrior += newIfrxUserDataSetEvents_OnPriorEventHandler(OnPriorEventHandler);m_ = name;DataColumnCollection cols = Columns;cols.CollectionChanged += new CollectionChangeEventHandler(ColumnsCollection_Changed);}public FrxDataTable(string name){constructor(name);}public FrxDataTable(DataTable t){constructor(t.TableName);string FieldNames = null;foreach (DataColumn col in t.Columns) FieldNames += col.Caption + "\n"; m_ds.Fields = FieldNames;m_ChildTable = t;}///<summary>/// Assigns table to report///</summary>public void AssignToDataBand(string BandName, TfrxReportClass report){IfrxComponent frx_component;((IfrxComponent)report).FindObject(BandName, out frx_component);((IfrxDataBand)frx_component).DataSet = (IfrxDataSet)m_ds;}///<summary>/// Assigns table to report///</summary>public void AssignToReport(bool Enable, TfrxReportClass report){report.SelectDataset(Enable, m_ds);}///<summary>/// On First event handler///</summary>private void OnFirstEventHandler(){nItem = 0;}///<summary>/// On Next event handler///</summary>private void OnNextEventHandler(){nItem++;}///<summary>/// On Prior evene handler///</summary>private void OnPriorEventHandler(){nItem--;}///<summary>/// On check EndOfFile event handler///</summary>private void OnCheckEOFEventHandler(out bool eof){if (m_ChildTable == null){eof = (nItem >= Rows.Count);}else{eof = (nItem >= m_ChildTable.Rows.Count);}}///<summary>/// On get value handler///</summary>private void OnGetValueHandler(object VarName, out object Val) {if (m_ChildTable == null){Val = Rows[nItem][VarName.ToString()];}else{Val = m_ChildTable.Rows[nItem][VarName.ToString()];}// FastReport does not know about System.Decimal object type// so convert it to Integerif (Val is Decimal){Val = Decimal.ToInt32((Decimal)Val);}}///<summary>/// Updates FastReport UserDataSet on Column addition///</summary>private void ColumnsCollection_Changed(object sender, CollectionChangeEventArgs e){DataColumnCollection cols = (DataColumnCollection)sender;string FieldNames = null;foreach (DataColumn col in cols) FieldNames += col.Caption + "\n";m_ds.Fields = FieldNames;}}}Button按钮中的代码引用FastReportFastReport.TfrxReportClass report = new FastReport.TfrxReportClass(); report.MainWindowHandle = (int)this.Handle;report.LoadReportFromFile(Application.StartupPath +"\\report\\zzylb.fr3");alluse.FrxDataTable rptdataset1 = new alluse.FrxDataTable("lab_dwzz");SqlDataAdapter sda = new SqlDataAdapter("select * from lab_dwzz", alluse.Class1.conn1);sda.Fill(rptdataset1);rptdataset1.AssignToReport(true, report);rptdataset1.AssignToDataBand("MasterData1", report);// MasterData1报表中的主数据report.ShowReport();以上是成功代码。
快报(FastReport)是一个功能强大的报表生成工具,它可以帮助用户快速、灵活地生成各种格式的报表。
在FastReport中,插入表格是非常常见的操作,可以用于展示数据、比较数据、分析数据等用途。
下面我们将介绍在FastReport中插入表格的命令,希望对大家有所帮助。
1. 打开报表我们需要打开一个已有的报表文件,或者创建一个新的报表文件。
在FastReport的界面中,可以通过菜单栏的“文件”、“打开”或“新建”来进行操作。
2. 插入表格对象在打开的报表文件中,选择需要插入表格的位置,然后点击菜单栏的“插入”、“对象”、“表格”命令。
也可以通过工具栏或快捷键来进行操作。
3. 设置表格属性插入表格后,可以通过双击表格对象或者右键点击表格对象并选择“属性”来进行设置。
可以设置表格的行数、列数、边框样式、背景颜色、文字样式等属性。
4. 填充数据在设置好表格属性之后,可以开始填充数据。
可以直接在表格中输入数据,也可以通过数据集绑定等方式来动态填充数据。
5. 导出报表完成表格的插入和数据填充之后,可以通过菜单栏的“文件”、“保存”或“另存为”命令来保存报表文件。
也可以通过导出命令将报表导出为PDF、Excel、Word等格式的文件。
通过以上步骤,我们可以在FastReport中轻松地插入表格,并且对表格的属性和数据进行灵活的设置。
希望本文对大家在FastReport中插入表格有所帮助。
在实际操作过程中,可以根据具体的需求和报表格式的要求来设置表格的样式和数据填充方式,并且可以配合其他元素如图表、文本框等来构建丰富多样的报表内容。
期待大家在使用FastReport时能够充分发挥其功能,为工作和生活带来便利。
对于使用快报(FastReport)的用户来说,插入表格是非常重要的操作,它可以使报表内容更加清晰、直观。
在这里,我们将继续探讨在FastReport中插入表格的更多细节,并共享一些常用的命令和技巧。
fastreport入门教程之参数查询报表参数查询报表我们创建一个比较复杂一点报表,在报表输出之前,在对话框中输入参数查询。
在上面的报表中在点击新报表,重新创建一个空白报表。
切换到data页,放置ADO Query组件到面板上,双击组件单出编辑器,输入查询语句:select*from Customer where CustNo>:p1加入一个对话框窗体,组织组件如下:设置组件属性:Label1:Caption='选择CustNo大于'Edit1:Text='2000'Button1:Caption='确定'ModalResult=mrOkButton2:Caption='取消'ModalResult=mrCancel打开Query的参数params属性编辑器对话框,设置参数:回到报表设计器页面,组织报表结构如下:进行预览,输入参数,查看显示结果。
同为比较常用的报表工具,FineReport对报表中参数的解决方案思路有相同,但具体的实现方式存在差异,主要有三种实现方式,大概如下:参数控件绑定数据1.描述FineReport为了让用户快速的实现参数查询数据功能,提供了专门的参数界面,用来放置与查询相关的控件,如下图:2.示例根据下图我们制作一个简单的查询界面,从而了解参数查询界面的具体制作方法。
2.1打开报表打开报表:%FR_HOME%\WebReport\WEB-INF\reportlets\doc\Primary\Para meter\Parameter.cpt,这张模板是模板参数章节的示例模板,该模板中添加了参数界面,以此模板为例来讲述参数界面的一些使用方法。
2.2参数布局按照下图所示,将控件拖至相应的位置,如下:另:参数界面采用绝对布局方式,因此可以将控件拖至面板中的任何位置。
2.3参数控件编辑风格默认的参数控件都是文本框,有时如希望使用日期控件来选择日期,或者下拉框直接选择数据,这就需要为参数控件定义编辑风格了。
fastreport入门教程之参数查询报表参数查询报表我们创建一个比较复杂一点报表,在报表输出之前,在对话框中输入参数查询。
在上面的报表中在点击新报表,重新创建一个空白报表。
切换到data页,放置ADO Query组件到面板上,双击组件单出编辑器,输入查询语句:select*from Customer where CustNo>:p1加入一个对话框窗体,组织组件如下:设置组件属性:Label1:Caption='选择CustNo大于'Edit1:Text='2000'Button1:Caption='确定'ModalResult=mrOkButton2:Caption='取消'ModalResult=mrCancel打开Query的参数params属性编辑器对话框,设置参数:回到报表设计器页面,组织报表结构如下:进行预览,输入参数,查看显示结果。
同为比较常用的报表工具,FineReport对报表中参数的解决方案思路有相同,但具体的实现方式存在差异,主要有三种实现方式,大概如下:参数控件绑定数据1.描述FineReport为了让用户快速的实现参数查询数据功能,提供了专门的参数界面,用来放置与查询相关的控件,如下图:2.示例根据下图我们制作一个简单的查询界面,从而了解参数查询界面的具体制作方法。
2.1打开报表打开报表:%FR_HOME%\WebReport\WEB-INF\reportlets\doc\Primary\Para meter\Parameter.cpt,这张模板是模板参数章节的示例模板,该模板中添加了参数界面,以此模板为例来讲述参数界面的一些使用方法。
2.2参数布局按照下图所示,将控件拖至相应的位置,如下:另:参数界面采用绝对布局方式,因此可以将控件拖至面板中的任何位置。
2.3参数控件编辑风格默认的参数控件都是文本框,有时如希望使用日期控件来选择日期,或者下拉框直接选择数据,这就需要为参数控件定义编辑风格了。
fastreport中文版入门教程之报表向导FastReport有几个报表向导简化报表的生成过程。
选择“文件|新建”菜单,界面如下:13.1、新报表向导有四个创建新报表的向导。
——标准报表向导——标准报表——点矩阵报表向导——点矩阵报表标准报表和点矩阵报表向导可以创建空白的标准报表或点矩阵报表。
报表包含有一个空白页。
标准报表向导和点矩阵报表向导允许生成报表中选择数据字段,创建组。
我们通过标准报表向导创建一个报表。
点击“文件|新建”菜单,选择标准报表向导,弹出向导窗口:可以看到,这个窗口有多个页标签。
第一个页中选择数据源;可以选择任何可用的数据源,也可以创建一个新的表——tabel或query。
点击new table或new query按钮,弹出数据源向导窗口。
在此我们选择customers数据源,点击“下一步>>”按钮。
下一页选择可以显示的字段。
左边列表中显示可以使用的字段,右边列表中显示的是已经选择的字段。
通过“加入>>”“全部加入>>”“<移除”“<<全部移除”按钮选择或移除可以显示的字段。
通过按钮,调整选取的字段的顺序。
下一个页创建一个或多个组。
这个示例中添加一个Group Header,Group Footer两个组。
这个页我们点击“下一步>>”按钮,跳过此页。
下一页设置页面属性。
选择显示方式,在右边可以查看显示样式。
最后一页设置显示模式。
点击“完成”按钮,创建如下报表:13.2、数据连接向导这个向导在当前报表中添加一个新的数据库连接。
这个向导将添加一个TfrxAdoDatabase组件到报表中。
点击“”按钮,弹出标准数据库连接窗口。
并设置登陆用户和登陆密码。
用户可以直接添加一个TfrxAdoDatabase组件建立连接。
13.3、新table向导这个向导可以在报表中加入一个新的数据表的连接。
用户选择表,并可以设置过滤条件。
查询数据:选择多张单据进行连打;是否选择打印机:是:打印时会弹出选择打印机的窗口;否:打印时会存储为XPS格式的文档。
XPS 是一种版面配置固定的电子文件格式,可以保存文件格式,而且具有档案共享的功能。
在在线检视或打印 XPS档案时,可以确保其格式与您希望的一样,而且其它使用者无法轻易变更档案中的数据。
FASTREPORT部分属性说明:PrintOnPreviousPage:本页可否打印在上页的剩余空间。
应用举例:多张连打时,如果上页还有空间,如何将下页接着打印?设置PrintOnPreviousPage为True.AllowSplit:页面内容是否可跨页打印。
ReprintOnNewPage:在每页重复打印。
应用举例:表头内容要在每页都显示(包括LOGO)?设置:ReprintOnNewPage为True.RowCount:控制总共打印几行;RowCount=0是打印全部;Start New Page:打印前先跳页;每页打印一行;Stretch:表身自动伸缩根据表身内容;应用举例:单据中有多行数据,但预览时每页只看到一行,且只有一页有显示?或者打印内容行与行之间有间隔?设置RowCount=0,Start New Page为False;Stretched为True.AutoWidth:自动调整文本的宽度;Datafield:数据库的字段名称;DataSet:连接至数据库;DisplayFormat:数据显示格式%2.2f:显示两位小数;%2.3f:显示三位小数位。
FlowTo:对象内容无法容纳时显示至其它对象;选择显示至的对象。
HideZeros:数字前面的0是否显示。
应用举例:当栏位的值为零时显示为空?设置HideZeros为TrueRotation:旋转文本。
StretchMode:对象伸缩的行为;WordWrap:文本是否自动换行;应用举例:表身栏位数据很长时,如何自动调整行高,自动换行?1)选择数据单元进行群组;2)StretchMode为smMaxHtight;WordWrap为True.SuppressRepeated:重复的值不打印,显示为空。
fastreport初级教程之嵌套报表嵌套报表有时一些复杂的报表结构中,需要报表的特殊位置显示特殊的数据。
通过FastReport的Band可以创建这些报表。
创建子报表可以使用“子报表组件”。
插入这种组件后,就会在设计器中添加一个新的页面,它连接着这个子报表组件。
镶嵌式报表就像一系列的多页报表系统。
唯一不同的就是嵌套报表显示在基础报表中特殊的位置,而不是在他的后面。
当输出报表时,当FastReport系统遇到“SubReport”组件,FastReport引擎,输出关联的设计页,然后输出报表的其他部分。
还可以在子报表窗面上添加子报表,增加嵌套层数。
注意:可以增加嵌套报表,但最多有6层数据。
5.2、设计子报表你可以在同一Band上放置两个或更多的“SubReport”组件。
这样允许报表设计中,输出数据可以有不同的长度,不同的宽度,不同的高度。
如你所见,报表在输出全部子报表后,生成报表结构。
子报表也可以使用各种对齐方法属性。
5.3、子报表中的限制既然子表是主报表的一部分,他又不能在包含以下Band:“ReportTitle/ReportFooter”、“PageTitle/PageFooter/PageBackground,”和“ColumnTitle/ColumnFooter.”。
把这些Band是可以放在主表单上,但是报表系统是不能对其进行处理。
同理,嵌套表的选项设置一样不被理会,因为报表输出的时候,主要用到的是主表单的选项。
不能把组件放在“subreport”组件的下面。
当显示子报表的数据时,报表系统将用子报表的内容覆盖“subReport”组件下面的位置。
打印可能会出现以下情况:如果要在subreport下面显示数据,可以使用child-band。
在需要多个子报表的情况,这种方法一样适用,5.4、PrintOnParent选项“subreport”组件又一个属性“printonparent”属性,根据情况有需要。
子报表是指在主报表中嵌入其他报表作为一个子元素进行展示的功能。
在FastReport中,子报表的用法非常灵活,可以满足各种不同的报表设计需求。
本文将详细介绍FastReport中子报表的用法,包括如何创建子报表、如何在主报表中嵌入子报表、子报表的数据绑定等内容。
一、创建子报表在FastReport中,创建子报表非常简单。
在FastReport设计器中打开一个新的报表项目,然后在报表项目中右键点击“子报表”节点,在下拉菜单中选择“添加子报表”选项。
接下来,可以看到一个空白的子报表页面出现在报表项目中,接下来就可以在这个空白的子报表页面上添加需要的报表元素,设计子报表的布局和样式。
二、在主报表中嵌入子报表设计好子报表之后,就可以在主报表中嵌入子报表了。
在FastReport 设计器中打开主报表项目,然后在需要嵌入子报表的位置,右键点击鼠标,在下拉菜单中选择“插入子报表”选项。
在弹出的对话框中,选择需要嵌入的子报表,并设置子报表的位置和大小。
这样就完成了在主报表中嵌入子报表的操作。
三、子报表的数据绑定在子报表中,通常需要和主报表中的数据进行绑定,以便在主报表中显示子报表所需的数据。
在FastReport中,可以使用数据集来进行数据绑定。
在主报表中创建一个数据集,然后在子报表中设置数据绑定,将子报表中需要显示的数据和主报表中的数据集进行绑定。
这样就可以实现子报表和主报表的数据关联。
四、子报表的参数传递除了数据绑定,有时候还需要在主报表和子报表之间传递参数。
在FastReport中,可以通过参数来实现这一功能。
在主报表中创建参数,然后在子报表中引用主报表中的参数。
这样就可以实现主报表和子报表之间的参数传递。
五、子报表的事件处理在FastReport中,子报表也可以处理一些事件,例如在子报表加载时执行一些初始化操作,在子报表关闭时执行一些清理操作等。
可以通过在子报表中编写相应的事件处理代码来实现这些功能。
六、总结通过本文的介绍,相信读者已经对FastReport中子报表的用法有了更深入的了解。
fastreport使用入门教程之报表预览、打印、导出创建的报表可以预览,打印和导出到报表可以支持的格式。
这些在报表预览界面都可以实现。
图中数字说明:1:报表页2:工具栏3:状态栏4:概要区工具栏按钮说明:图标名称说明打印报表输出当前预栏报表到打印机打开报表从文件中(*.fr3)打开预览报表保存报表将当前预览的报表保存到文件中。
文字查询在报表预览中查询匹配文字放大放大显示预览缩小缩小显示预览全屏全屏显示预览概述页面设置编辑导出弹出下拉条选择可以支持的导出格式1、控制键快捷键描述Ctrl+S保存到文件中“*.fr3”Ctrl+P打印报表Ctrl+F文字查找F3继续查找Arrows移动报表PageUp,PageDown向上/向下滚动Ctrl+PageUp,PageDown上一页/下一页滚动Home移到报表开始End移到报表结尾2、鼠标控制Action说明Left button鼠标状态为“小手”可以移动页面,在工具栏点击放缩按钮。
Right button弹出上下文右键菜单Double-click在全屏模式下双击还原到普通模式。
Mouse scroll滚动报表页面。
3、报表的打印点击工具栏打印机图标按钮,弹出打印机选项窗体。
设置相关选项,点击确定按钮,输出到打印机。
4、报表中的文字搜索FastReport可以在预览窗口进行文字的搜索。
在工具览点击查询按钮,弹出查找设置对话框:点击确定按钮,开始查找,找到相匹配的字符串进行高亮显示。
再按F3可以从当前位置向下继续查找上面设置的文字。
5、报表的导出FastReport可以将生成的报表到出导不同格式的文件中,可用于将来的修改。
如果要支持这些导出能力,需要将FastReport4exports组件面板上的组件放置到delphi的窗体上。
FastReport可以支持13格式的导出,他们是:PDF文件、HTML文件、RTF 文件、excel table(OLE)、XML格式、BMP图形、JPEG图形、TIFF图形、CSV 文件,GIF文件、文本文件、开放文本文件、开放表单文件。
FastReport 报表模板设置1. 模板的创建打开报表菜单,在工具栏的“报表模板”选项中选择空值,点击“设计”按钮,打开报表设计界面,如图1-1图 1-1如图1-2,选择所需控件:双击或拖动到“模板样式”中,控件位于“”中Page Header :页面页眉Page Footer :页面页脚Master Data :绑定列表数据Header: 报表的页眉Footer :报表的页脚Group Header :分组页眉Group Footer :分组页脚标签控件,绑定数据请用[表名."字段"] 图片控件:绑定图片,控件栏属性模板样式字段列表字体与对齐方式2.模板的编辑打开报表菜单,在工具栏的“报表模板”选项中选择需要更改的模板,点击“设计按钮”。
打开报表设计界面。
对报表进行更改后,保存文件。
3.页眉与页尾将控件Page Header、Page Footer、Header、Footer来拖到指定的位置,双击控件,输入页眉或页尾的内容,单击“OK”保存。
4.绑定列表数据Master Data控件用于绑定数据源中每一条数据明细,单击Master Data控件,将控件添加到页面上,在右边的字段列表中将需要的字段拖到Master Data中对应的位置,也可以使用控件绑定数据,绑定格式为“[表名.”字段名”]”,双击已添加的字段列表,如果需要其设置内容的格式,如图4-2,选择“Format”选项卡:Text为字符;Number为数字类型,类型为Number时,在“Format”中设置数字的类型(如小数位,货币小数等);Date/Time 为日期类型,在“Format”中设置日期的显示类型;Boolean为布尔类型的,在“Format”中设置布尔类型的显示类型。
当出现空值显示为0的情况,请点击右键,选择”Hide Zeros”前的勾选框图4-2其它属性可在“字体与对齐方式”中及”属性”中设置用于设置控件内容的字体。
fastreport初级教程之嵌套报表
嵌套报表
有时一些复杂的报表结构中,需要报表的特殊位置显示特殊的数据。
通过FastReport的Band可以创建这些报表。
创建子报表可以使用“子报表组件”。
插入这种组件后,就会在设计器中添加一个新的页面,它连接着这个子报表组件。
镶嵌式报表就像一系列的多页报表系统。
唯一不同的就是嵌套报表显示在基础报表中特殊的位置,而不是在他的后面。
当输出报表时,当FastReport系统遇到“SubReport”组件,FastReport引擎,输出关联的设计页,然后输出报表的其他部分。
还可以在子报表窗面上添加子报表,增加嵌套层数。
注意:可以增加嵌套报表,但最多有6层数据。
5.2、设计子报表
你可以在同一Band上放置两个或更多的“SubReport”组件。
这样允许报表设计中,输出数据可以有不同的长度,不同的宽度,不同的高度。
如你所见,报表在输出全部子报表后,生成报表结构。
子报表也可以使用各种对齐方法属性。
5.3、子报表中的限制
既然子表是主报表的一部分,他又不能在包含以下Band:“ReportTitle/ReportFooter”、“PageTitle/PageFooter/PageBackground,”和“ColumnTitle/ColumnFooter.”。
把这些Band是可以放在主表单上,但是报表系统是不能对其进行处理。
同理,嵌套表的选项设置一样不被理会,因为报表输出的时候,主要用到的是主表单的选项。
不能把组件放在“subreport”组件的下面。
当显示子报表的数据时,报表系统将用子报表的内容覆盖“subReport”组件下面的位置。
打印可能会出现以下情况:
如果要在subreport下面显示数据,可以使用child-band。
在需要多个子报表的情况,这种方法一样适用,
5.4、PrintOnParent选项
“subreport”组件又一个属性“printonparent”属性,根据情况有需要。
默认属性为false。
通常子表显示在主表的band上,父Band不依赖于子Band。
不进行拉伸。
如果“printonparent”属性设为true,则打印输出报表的子报表到主报表的包含有“subreport”组件的band上。
你可以使Band可以随内容进行拉伸。
同为比较常用的报表工具,FineReport对嵌套类报表的解决方案与FastReport有所不同,由于工具本身的差异化,在实现报表嵌套功能时,FineReport的步骤更为简单。
FineReport是用主子报表来实现嵌套功能,具体如下:
嵌入式主子表
1.描述
嵌入式主子报表特点是在单元格中嵌入独立的报表模板,嵌入的模板称为子报表,嵌入子报表后的整体称为主报表。
各子报表间格式可以不对齐,子表与主表的格式也可以不对齐,子报表能够获取主表中的值。
如下图员工销售一览表:
2.示例
2.1制作主报表
如下图设计主表:
添加参数
在主表中定义一个报表参数,参数名为销售员,通过参数查询某一个销售员的个人信息及订单信息。
使用默认的参数界面,销售员参数控件选择下拉框,实际值为雇员表中的雇员ID,显示值为对应的姓名。
具体可查看参数定义与参数面板制作章节。
2.2添加不同参数的子报表
子报表sub_1.cpt说明
子报表1:%FR_HOME%\WebReport\WEB-INF\reportlets\doc\Advanced\Ma sterReport\sub_1.cpt。
该子表中通过参数“ID”查询出对应销售员的个人信息。
SQL语句为:SELECT *FROM雇员where雇员ID=${ID},表样为:
在主表中插入子表1
右击主表B3单元格,单元格元素>插入子报表,弹出编辑子报表对话框,选择子表1所在路径;
添加参数ID(子表中的参数名称),值使用公式$销售员,将主表的销售员参数值传递给子表1的ID参数,如下图设置:
2.3添加相同参数的子报表
∙子报表sub_2.cpt说明
子报表2:%FR_HOME%\WebReport\WEB-INF\reportlets\doc\Advanced\Ma sterReport\sub_2.cpt。
该子表中通过参数“销售员”查询出对应销售员的订单信息。
SQL语句为:SELECT*FROM订单where雇员ID=${销售员},表样为:
∙在主表中插入子表2
右击主报表D5单元格,单元格元素>插入子报表,弹出编辑子报表对话框,选择子表2所在路径;
由于子表2的参数名与主表中的参数名相同,这时可以不设置传递参数,直接选择继承报表的参数。
3.保存与预览
保存模板,点击设计器中的分页预览,效果如上。