fastreport使用入门教程之创建报表

合集下载

FastReport报表模板设置

FastReport报表模板设置

FastReport报表模板设置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报表设计指南

设计器FastReport使用自己的报表设计器,在设计时只要在TfrReport控件上双击就可以使用它。

设计者允许快速而简单地使用报表设计器并能够在Delphi的IDE中直接预览报表。

设计器包括可融合的面板(工具栏),可以移动并改变为你所需要的样子。

当设计器关闭时位置和可视信息保存在Windows的注册表中,并能够在下次打开设计器时恢复。

如果你想在运行时使用设计器,你需要在项目中的窗体上包含TfrDesigner控件(用于显示TfrReport控件内容)。

或者,你也可以在你在单元中引用FR_Desgn单元。

TfrDesigner控件能够让你的最终用户调用、保存、设计和修改报表。

使用控制键●光标键-移动到下一个对象;●Ctrl + 光标键-沿光标方向移动选中的对象;●Shift + 光标键-沿光标方向增加或者减少所选对象的尺寸;●Enter -调出所选对象的编辑器;●Del -删除所选对象;●Insert -显示“插入数据字段”工具栏;●Ctrl + Enter -调出所选对象的memo编辑器;●Ctrl + 1..9 -主,设置所选对象的边框宽度;上面的对话框列出了所有系统中可用的打印机。

如果你的系统没有安装打印机,你可以选择“虚拟打印机”选项,这将可以使用所有的打印尺寸,但不能打印输出。

这只有在报表的设计状态中可以使用,并允许预览报表。

你也可以使用虚拟打印为某个打印机设计报表,这不需要在你的电脑中按着打印机(例如,你想设计A3幅面的报表,但你的报表只能打印A4)。

如果选中“装入报表时选择”选项,打印信息保存到报表中,当这个报表再次调入时,保存的打印机将自动被选择。

如果这个打印机在系统中没有找到,那么将选择缺省的Windows打印机。

如果你需要在报表中使用“总页数”函数,象打印“第xx页共xx页”时需要选中“两遍报表”选项。

如果你使用TotalPages函数,但你忘记选取中这个选项,你将在你的报表中得到总页数为0。

FastReport--打印报表操作手册

FastReport--打印报表操作手册

安易信息系统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报表工具生成报表PDF文档

使用FastReport报表工具生成报表PDF文档

使⽤FastReport报表⼯具⽣成报表PDF⽂档在我们开发某个系统的时候,客户总会提出⼀些特定的报表需求,固定的报表格式符合他们的业务处理需要,也贴合他们的⼯作场景,因此我们尽可能做出符合他们实际需要的报表,这样我们的系统会得到更好的认同感。

本篇随笔介绍如何基于FastReport报表⼯具,⽣成报表PDF⽂档展⽰医院处⽅笺的内容。

之前在随笔《》介绍过FastReport这个强⼤的报表⼯具,虽然介绍了各种报表的处理代码,不过主要的案例还是官⽅的案例,本篇随笔介绍基于某个医院的处⽅笺的格式报表的处理。

是⼀款适⽤于Windows Forms, 和MVC框架的功能齐全的报表分析解决⽅案。

以C#语⾔编写⽽成并只包含可托管的代码。

它与.NET Framework 2.0以及更⾼版本兼容。

⽀持在报表中添加⽂本、图像、线条、形状、语句、条形码、矩阵、表格、RTF、选择框等,列表报表、分组报表、主从报表、多列报表,⼦报表都可以实现处理。

通可以为终端⽤户提供⼀个报表设计器,让⽤户可以⽅便的修改现有报表和创建⾃定义报表。

1、定义报表模板和其他常规的报表⼯具⼀样,报表⼯具也需要定义好报表模板⽂件,然后再基于这个报表模板进⾏内容的呈现,报表模板⼀般定义标题、报表页眉、明细内容、页脚等信息。

我们来看看⼤概的需求效果,这个是处⽅笺的常规格式。

我⼤概需要弄个类似格式的处⽅笺的报表,其中处⽅药需要动态⽣成,以及患者信息、医⽣审核签字的地⽅需要动态⽣成,当然,⼆维码,条码等内容也需要⼀并根据信息动态⽣成出来,由于我主要想通过PDF展⽰,因此使⽤报表⼯具⽣成PDF⽂档,已经预览或者下载即可。

我们先来看看最终设计好的报表模板,在FastReport设计器⾥⾯的效果如下所⽰。

其中,标题部分,主要在页眉,需要展⽰处⽅列表的在数据区展⽰,页脚放置⼀些联系信息等,这样就构建了⼀个完整的报表模板。

创建⼀个报表模板,我们先要定义报表页⾯格式,报表报表的宽度,⾼度是⾃定义的还是标准的,还要设置它的页边距等信息,如下所⽰。

fastreport使用手册

fastreport使用手册

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新报表制作说明

FastReport新报表制作说明

FastReport4.7 新报表制作说明使用说明1、关于脚本如需使用新的报表作业,只要将报表指向统一更新为PKRPT_New即可,例如:oPD.tAddPrc('RPT5020', 502001, '纸箱订单', 'TFormRpt_New', '', 'PKRPT_New', 'R');oPD.tAddPkg('PKRPT_New', 502001, '纸箱订单');oPD.vSetPrm('RPT5020', 'XPL', true);oPD.vSetEdt('RPT5020', 'SE', true);oPD.vSetSys('RPT5020', 'O', true);oPD.vSetDependantPkgs('PKRPT_New','PKRPT_New');oRPS.AddS('P_PKG:PKRPT_New','Caption,Weight,PreLoadPkgs','"纸箱订单",502001,"PKRPT_New"');oRPS.AddL( 'P_PRC:RPT5020','P_PKG:PKRPT_New','P_PRC_PACKAGE',0);oRPS.AddL('P_PRC:ORDCORD1', 'P_PRC:RPT5020', 'P_PRCRPT', 2);2、关于开发新报表包含自定义数据集功能,大部分老的报表可以无需在Delphi内写代码而直接在frx4中实现。

fastreport报表设计指南

fastreport报表设计指南

设计器FastReport使用自己的报表设计器,在设计时只要在TfrReport控件上双击就可以使用它。

设计者允许快速而简单地使用报表设计器并能够在Delphi的IDE中直接预览报表。

设计器包括可融合的面板(工具栏),可以移动并改变为你所需要的样子。

当设计器关闭时位置和可视信息保存在Windows的注册表中,并能够在下次打开设计器时恢复。

如果你想在运行时使用设计器,你需要在项目中的窗体上包含TfrDesigner控件(用于显示TfrReport控件内容)。

或者,你也可以在你在单元中引用FR_Desgn单元。

TfrDesigner控件能够让你的最终用户调用、保存、设计和修改报表。

使用控制键●光标键-移动到下一个对象;●Ctrl + 光标键-沿光标方向移动选中的对象;●Shift + 光标键-沿光标方向增加或者减少所选对象的尺寸;●Enter -调出所选对象的编辑器;●Del -删除所选对象;●Insert -显示“插入数据字段”工具栏;●Ctrl + Enter -调出所选对象的memo编辑器;●Ctrl + 1..9 -主,设置所选对象的边框宽度;上面的对话框列出了所有系统中可用的打印机。

如果你的系统没有安装打印机,你可以选择“虚拟打印机”选项,这将可以使用所有的打印尺寸,但不能打印输出。

这只有在报表的设计状态中可以使用,并允许预览报表。

你也可以使用虚拟打印为某个打印机设计报表,这不需要在你的电脑中按着打印机(例如,你想设计A3幅面的报表,但你的报表只能打印A4)。

如果选中“装入报表时选择”选项,打印信息保存到报表中,当这个报表再次调入时,保存的打印机将自动被选择。

如果这个打印机在系统中没有找到,那么将选择缺省的Windows打印机。

如果你需要在报表中使用“总页数”函数,象打印“第xx页共xx页”时需要选中“两遍报表”选项。

如果你使用TotalPages函数,但你忘记选取中这个选项,你将在你的报表中得到总页数为0。

FastReport--打印报表操作手册

FastReport--打印报表操作手册

安易信息系统FastReport报表打印格式操作手册目录FastReport对象 (2)“Text”对象 (3)“Band”对象 (6)“Image”对象 (9)“SubReport”对象 (10)“Line”对象 (10)“CheckBox”对象 (10)“RichText”对象 (10)“OLE”对象 (11)“Chart”对象 (12)“Shape”对象 (14)“Barcode”对象 (14)“RichText 2.0”对象 (15)设计器 (16)使用控制键 (17)使用鼠标 (17)报表选项 (17)页面选项 (18)设计器选项 (20)对象观察器 (21)“插入数据字段”窗口 (22)数据字典 (22)表达式编辑器 (27)工具栏 (29)“标准”工具栏 (29)“格式”工具栏 (30)“边框”工具栏 (31)“对齐”工具栏 (32)对象的属性和方法 (33)解释器的使用 (38)创建ANYIHIS的FastReport报表 (39)FastReport对象这个对象无疑是FastReport中最强大、最灵活的对象。

主要是,它提供一个包含多行文本的矩形框。

你可以设置边框的类型、颜色和宽度;以及字体属性、文本对齐方式和字体方向(垂直或水平)。

要设置对象的属性,使用“文本”和“边框”工具栏:text对象的内容主要由备注类型的对象组成,可以包含:文本,变量,数据字段,或这些的任意组合。

字体格式将应用于text对象所包含的所有文本。

使用text对象的一些示例:(*)宽度,cm:[Length]——使用变量([Length])显示固定文本(宽度,CM)。

宽度,cm:[Table1.”Length_cm”]——使用数据字段([Table1.”Length_cm”])显示固定文本(宽度,CM)。

宽度,cm:[[Length inch]*2.54]——使用变量表达式([[variable]*value])显示固定文本(宽度,CM)。

fastreport初级使用教程之交叉报表

fastreport初级使用教程之交叉报表

fastreport初级使用教程之交叉报表这种报表类型是表格结构,意思是它包含着一系列的行和列。

同时它不可预知,表格有多少个行和列。

这就是为什么报表不但纵向增加,而且横向增加。

以下显示这种类型的报表的例子:表格的数据如下:这个例子中,表格有两个行和四个列。

A和b行的标题,1,2,3,4是列的标题。

A1,a2..a4,b1..b4是表格中的数据。

我们创建一个数据集,有三个字段,包含如下内容:a1a1a2a2a3a3a4a4b1b1b2b2b3b3b4b4第一个字段为行序号,第二个字段为列序号,第三个字段为表格数据。

当输出报表时,FastReport在内存创建一个表格,并填入数据。

标题如果有两层,显示数据如下:报表需要如下数据:a101a10.1a102a10.2a201a20.1a202a20.2b101b10.1b102b10.2b201b20.1b202b20.2内存中创建的表格数据如下:1、创建交叉报表现在我们从理论转到实践。

我们创建一个简单的报表,数据包含四年来的雇员的薪水。

这样,我们需要一个“CrossTest”的数据表,数据包含如下内容:Name Year SalaryAnn19993300Ben20022000….在delphi中创建一个新的工程,添加“TTable”,“TfrxDBData”和“TfrxReport”组件。

并设值其属性:Table1:DatabaseName='c:\Program Files\FastReport4\Demos\Main'TableName='crosstest.db'frxDBDataSet1:DataSet=Table1UserName='SimpleCross'为了完成交叉报表,我们需要使用组件“TfrxCrossObject”,此组件在FastReport组件面板上。

将他添加到delphi的表单中,不需要设置任何属性;同时,包含全部可用函数的“frxCross”单元被添加到uses列表中。

fastreport frxdbdataset 使用方法

fastreport frxdbdataset 使用方法

fastreport frxdbdataset 使用方法FastReport是一款广泛使用的报表设计工具,它提供了丰富的组件和数据集,使得用户可以轻松地创建各种报表。

在FastReport中,frxDBDataset是一个重要的数据集类型,用于从数据库中获取数据,本文将详细介绍其使用方法。

一、frxDBDataset概述frxDBDataset是FastReport中的一个数据集类型,它提供了对数据库的操作接口,可以执行查询、插入、更新和删除等操作。

通过frxDBDataset,用户可以轻松地从数据库中获取数据,并将其展示在报表中。

二、使用步骤1.创建frxDBDataset对象在报表设计界面中,首先需要创建一个frxDBDataset对象。

可以通过右键单击报表设计器,选择“数据”->“添加数据集”->“SQL查询”来创建一个frxDBDataset对象。

2.配置SQL查询frxDBDataset需要通过SQL查询来指定从哪个数据库、哪个表、哪个字段获取数据。

在创建frxDBDataset对象后,可以在属性窗口中配置SQL查询。

3.绑定控件将frxDBDataset绑定到报表中的控件,以便在报表运行时从数据库中获取数据并显示在控件中。

可以通过右键单击控件,选择“数据”->“绑定”->“frxDBDataset”来完成绑定操作。

4.执行查询完成绑定后,报表会根据SQL查询从数据库中获取数据,并将其显示在报表中。

用户可以通过运行报表来测试数据是否正确显示。

三、常见问题及解决方法1.数据库连接问题:检查数据库连接信息(如服务器地址、用户名、密码、数据库名称等)是否正确。

2.SQL查询错误:检查SQL查询语句是否正确,是否存在语法错误或无法识别的数据库字段。

3.数据获取问题:如果报表中控件的数据无法正确显示,可能是由于数据库查询结果为空或数据格式不正确。

此时需要检查SQL查询语句和数据库表结构。

FastReport4中文使用手册

FastReport4中文使用手册

FastReport4中文使用手册FastReport4是一款用于快速创建报表和生成报表的工具。

它是一个功能全面的软件,提供了多种界面和报表样式,可以满足不同用户的需求。

本文将介绍FastReport4的中文使用手册,帮助用户更好地使用该软件。

安装FastReport4的安装比较简单,只需要按照向导提示进行操作即可。

安装完成后,启动软件。

在软件中,有一个“向导”按钮,这个按钮可以帮助用户快速上手。

界面FastReport4的界面比较清晰、易于操作。

在软件的主界面上,有一个工具栏和一个菜单栏。

用户可以从菜单栏中选择不同的命令,从工具栏中选择不同的工具。

报表制作在FastReport4中,报表的制作非常简单。

用户只需要从工具栏中选择“新建报表”,然后根据需要选择不同的报表样式和布局。

用户还可以选择不同的数据源和字段,以便生成所需的报表。

报表生成在FastReport4中,用户可以快速生成报表。

只需要选择需要生成的报表类型、数据源和布局,然后点击“生成报表”按钮即可。

如果需要,用户可以将报表输出到不同的文件格式,如PDF、Microsoft Excel等。

报表排版FastReport4还提供了丰富的报表排版功能。

用户可以通过调整表格、图片、文本框的大小和位置,来实现所需的报表效果。

用户还可以添加不同的样式,使报表更加美观。

报表设计在FastReport4中,用户可以通过报表设计功能,对报表进行更加细致的编辑。

用户可以在报表上添加不同的控件,如文本框、图片、图表等。

用户还可以通过操作数据源,对报表进行更加详细的调整。

总结FastReport4是一款非常实用的报表制作和生成工具,具有丰富的界面和功能。

通过本文的介绍,相信大家已经了解到了FastReport4的基本使用方法。

希望读者能够通过这篇中文使用手册,更好地使用FastReport4,为自己的工作提高效率。

FastReport4 动态报表制作

FastReport4 动态报表制作

FastReport4 动态报表制作注:1、窗体报表控件FR:TfrxReport;frDB:TfrxDBDataset2、调用自定义函数:GetPrnFieldWidth(ADOQ_List); //取得查询结果中各字段宽度3、全局变量:Prn_FieldWidth: Array of integer; //打印时各字段宽度数组通过GetPrnFieldWidth修改其值4、uses PRINTERS;代码:procedureTFrm_yppf_prn_pfd.ToolButton3Click(Sender: TObject);Var//DataPage: TfrxDataPage;Page: TfrxReportPage;PageTitle:TfrxReportTitle;PageHeader:TfrxPageHeader;//Band: TfrxBand;MastData: TfrxMasterData;PageSummary:TfrxReportSummary;Memo: TfrxMemoView;i:integer;MLeft:Real;//表头字段在mastdata中的左边距PaperWidth:Real; //纯报表(不含边距)宽度(毫米)begin//清除报表FR.Clear;//1====添加页Page:=TfrxReportPage.Create(FR);Page.CreateUniqueName;//创建唯一名称//Page.SetDefaults;//设置默认字段大小, 纸张//自定义纸张大小//Page.PaperWidth:=210; //纸张宽//Page.PaperHeight:=297;//纸张高Page.PaperSize:=9;//a4纸Page.Orientation:=poPortrait; //纸张纵向//Page.Orientation:=poLandscape; //纸张横向Page.TopMargin:=25;//上边距Page.BottomMargin:=15;Page.LeftMargin:=15;Page.RightMargin:=15;//2====添加一个报表标题栏PageTitle:=TfrxReportTitle.Create(Page);PageTitle.CreateUniqueName;PageTitle.Top:=0;PageTitle.Height:=140; //留出空白行//得到报表不含边距的宽度(毫米)转换为像素时需乘以3.77953//SetBounds中用的是像素值PaperWidth:=(Page.PaperWidth-page.LeftMargin-page.RightMargin)*3.77953; //添加标题memoMemo:= TfrxMemoView.Create(PageTitle);Memo.CreateUniqueName;Memo.HAlign:=haCenter;//左右居中Memo.VAlign:=vaCenter;//上下居中Memo.Font.Size:=14;Memo.Text := '药品批发单';Memo.Height := 40;Memo.Align:=baWidth;//伸展坐标到标题栏的宽度//摘要第一行Memo:= TfrxMemoView.Create(PageTitle);Memo.CreateUniqueName;Memo.HAlign:=haLeft;//左右居中Memo.VAlign:=vaCenter;//上下居中Memo.Text := '单号:'+LEdit_dh.Hint;Memo.Height := 20;Memo.Frame.Typ:=[ftLeft,ftRight,ftTop,ftBottom];//显示边线Memo.SetBounds(0,60,PaperWidth/3,20);//Memo:= TfrxMemoView.Create(PageTitle);Memo.CreateUniqueName;Memo.HAlign:=haLeft;//左右居中Memo.VAlign:=vaCenter;//上下居中Memo.Text := '单位:'+LEdit_dwmc.Text;Memo.Height := 20;Memo.Frame.Typ:=[ftLeft,ftRight,ftTop,ftBottom];//显示边线Memo.SetBounds(PaperWidth/3,60,PaperWidth/3,20);//Memo:= TfrxMemoView.Create(PageTitle);Memo.CreateUniqueName;Memo.HAlign:=haLeft;//左右居中Memo.VAlign:=vaCenter;//上下居中Memo.Text := '批发金额:'+LEdit_SumPfj.Text;Memo.Height := 20;Memo.Frame.Typ:=[ftLeft,ftRight,ftTop,ftBottom];//显示边线Memo.SetBounds(PaperWidth/3*2,60,PaperWidth/3,20); //摘要第二行Memo:= TfrxMemoView.Create(PageTitle);Memo.CreateUniqueName;Memo.HAlign:=haLeft;//左右居中Memo.VAlign:=vaCenter;//上下居中Memo.Text := '结算方式:'+LEdit_jsfsmc.Text;Memo.Height := 20;Memo.Frame.Typ:=[ftLeft,ftRight,ftTop,ftBottom];//显示边线Memo.SetBounds(0,80,PaperWidth/3,20);//Memo:= TfrxMemoView.Create(PageTitle);Memo.CreateUniqueName;Memo.HAlign:=haLeft;//左右居中Memo.VAlign:=vaCenter;//上下居中Memo.Text := '制单人:'+LEdit_zdr.Text;Memo.Height := 20;Memo.Frame.Typ:=[ftLeft,ftRight,ftTop,ftBottom];//显示边线Memo.SetBounds(PaperWidth/3,80,PaperWidth/3,20);//Memo:= TfrxMemoView.Create(PageTitle);Memo.CreateUniqueName;Memo.HAlign:=haLeft;//左右居中Memo.VAlign:=vaCenter;//上下居中Memo.Text := '制单日期:'+LEdit_zdrq.Text;Memo.Height := 20;Memo.Frame.Typ:=[ftLeft,ftRight,ftTop,ftBottom];//显示边线Memo.SetBounds(PaperWidth/3*2,80,PaperWidth/3,20); //摘要第三行Memo:= TfrxMemoView.Create(PageTitle);Memo.CreateUniqueName;Memo.HAlign:=haLeft;//左右居中Memo.VAlign:=vaCenter;//上下居中Memo.Text := '操作员:'+UserName;Memo.Height := 20;Memo.Frame.Typ:=[ftLeft,ftRight,ftTop,ftBottom];//显示边线Memo.SetBounds(0,100,PaperWidth/3,20);//Memo:= TfrxMemoView.Create(PageTitle);Memo.CreateUniqueName;Memo.HAlign:=haLeft;//左右居中Memo.VAlign:=vaCenter;//上下居中Memo.Text := '打印日期:'+DateToStr(Date)+'^^^'+TimeToStr(GetTime); Memo.Height := 20;Memo.Frame.Typ:=[ftLeft,ftRight,ftTop,ftBottom];//显示边线Memo.SetBounds(PaperWidth/3,100,PaperWidth/3,20);//Memo:= TfrxMemoView.Create(PageTitle);Memo.CreateUniqueName;Memo.HAlign:=haLeft;//左右居中Memo.VAlign:=vaCenter;//上下居中Memo.Text := '';Memo.Height := 20;Memo.Frame.Typ:=[ftLeft,ftRight,ftTop,ftBottom];//显示边线Memo.SetBounds(PaperWidth/3*2,100,PaperWidth/3,20);//=3==添加Pageheader (表头)PageHeader:=TfrxPageHeader.Create(Page);PageHeader.CreateUniqueName;//PageHeader.Top:=PageTitle.Height+120; //其总是紧随PageTitle之后PageHeader.Height:=20;//添加表头memoGetPrnFieldWidth(ADOQ_List); //取得查询结果中各字段宽度MLeft:=0;for i := 0 to ADOQ_List.FieldCount - 1 doBeginMemo:=TfrxMemoView.Create(PageHeader);Memo.CreateUniqueName;Memo.HAlign:=haCenter;Memo.HAlign:=haCenter;Memo.VAlign:=vaCenter; //上下对齐Memo.Frame.TopLine.Style:=fsSolid;Memo.Frame.BottomLine.Style:=fsSolid;Memo.Frame.LeftLine.Style:=fsSolid;Memo.Frame.RightLine.Style:=fsSolid;//边线格式Memo.Frame.Typ:=[ftLeft,ftRight,ftTop,ftBottom];//显示边线 Memo.Text:=Trim(ADOQ_List.Fields[i].FieldName);ifi<ADOQ_List.FieldCount-1 thenBeginMemo.SetBounds(MLeft,0,Prn_FieldWidth[i]*7.5,20);EndElseBegin //最后一列时 ,页面剩余宽度都给他Memo.SetBounds(MLeft,0,PaperWidth-MLeft,20);End;MLeft:=MLeft+Prn_FieldWidth[i]*7.5;//下一列左起位置End;//4=====主数据 (记录)MastData:=TfrxMasterData.Create(Page);MastData.CreateUniqueName;MastData.Top:=PageTitle.Height+PageHeader.Height; MastData.Height:=20;MastData.DataSet:=frDB;//添加 memoMLeft:=0;for i := 0 to ADOQ_List.FieldCount - 1 doBeginMemo:=TfrxMemoView.Create(MastData);Memo.CreateUniqueName;//Memo.HAlign:=haCenter;Memo.HAlign:=haLeft;Memo.VAlign:=vaCenter; //上下对齐Memo.Font.Size:=9;Memo.Frame.TopLine.Style:=fsSolid;Memo.Frame.BottomLine.Style:=fsSolid;Memo.Frame.LeftLine.Style:=fsSolid;Memo.Frame.RightLine.Style:=fsSolid;//边线格式Memo.Frame.Typ:=[ftLeft,ftRight,ftTop,ftBottom];//显示边线 Memo.DataSet:=frDB;Memo.DataField:=Trim(ADOQ_List.Fields[i].FieldName);ifi<ADOQ_List.FieldCount-1 thenBeginMemo.SetBounds(MLeft,0,Prn_FieldWidth[i]*7.5,20);EndElseBegin //最后一列时 ,页面剩余宽度都给他Memo.SetBounds(MLeft,0,PaperWidth-MLeft,20);End;MLeft:=MLeft+Prn_FieldWidth[i]*7.5;//下一列左起位置 End;//5=====页尾PageSummary:=TfrxReportSummary.Create(page); PageSummary.CreateUniqueName; PageSummary.Height:=20;//添加summary memoMemo:= TfrxMemoView.Create(PageSummary); Memo.CreateUniqueName;Memo.HAlign:=haLeft;//左右居中Memo.VAlign:=vaCenter;//上下居中Memo.Top:=0;Memo.Left:=0;Memo.Height := 20;Memo.Font.Size:=10;Memo.Text :=;Memo.Align:=baWidth;//伸展坐标到标题栏的宽度//FR.DesignReport();exit;//显示报表FR.ShowReport;end;自定义函数代码://==================================================== ===========//====得到欲打印的查询结果中各字段的最长值,结果保存在Prn_FieldWidth====== //==================================================== ============ProcedureGetPrnFieldWidth(MyADOQ:TADOQuery);Vari:integer;FindSql:String;BeginSetLength(Prn_FieldWidth,MyADOQ.FieldCount);//先使表头字段宽度等于标题宽度fori := 0 to MyADOQ.FieldCount - 1 doBegin//ADOQ_List.Fields[i].FieldName 默认为宽字符型 widestring,用length只能取得其字符长度//用Pchar可将其转换为AnsiString类型,这样length可以取得其字节长度Prn_FieldWidth[i]:=Length(Pchar(Trim(MyADOQ.Fields[i].FieldName )));MyADOQ.Next;End;//再用查询结果各字段结果长于标题着替换fori := 0 to MyADOQ.FieldCount - 1 doBeginFindSql:='SELECT Max(Datalength('+ Trim(MyADOQ.Fields[i].FieldName)+'))as 字段最长值'+' FROM (' +MyADOQ.SQL[0]+') DERIVEDTBL';DM.ADOQ_Find.Close;DM.ADOQ_Find.SQL.Clear;DM.ADOQ_Find.SQL.Add(FindSql);DM.ADOQ_Find.Open;if DM.ADOQ_Find.RecordCount>0 thenBeginif StrToInt(DM.ADOQ_Find.FieldByName('字段最长值').AsString)>Prn_FieldWidth[i] thenPrn_FieldWidth[i]:=StrToInt(DM.ADOQ_Find.FieldByName('字段最长值').AsString);End;MyADOQ.Next;End;End;。

fastreport 表格

fastreport 表格

FastReport是一款功能强大的报表生成工具,支持多种数据库和数据源。

在FastReport 中,表格是用于展示数据的常用控件之一。

要在FastReport中创建表格,可以按照以下步骤进行操作:
1. 打开FastReport设计器并创建一个新的报表文件。

2. 从工具箱中拖拽一个表格控件到报表的设计区域。

3. 在属性面板中设置表格的相关属性,例如行数、列数、边框样式等。

4. 将需要显示的数据字段与表格的单元格进行绑定。

可以通过拖拽字段到单元格或者使用数据管道来实现。

5. 根据需要对表格进行格式化和样式调整,例如设置字体、颜色、背景色等。

6. 预览和保存报表文件。

fastreport中文版入门教程之报表向导

fastreport中文版入门教程之报表向导

fastreport中文版入门教程之报表向导FastReport有几个报表向导简化报表的生成过程。

选择“文件|新建”菜单,界面如下:13.1、新报表向导有四个创建新报表的向导。

——标准报表向导——标准报表——点矩阵报表向导——点矩阵报表标准报表和点矩阵报表向导可以创建空白的标准报表或点矩阵报表。

报表包含有一个空白页。

标准报表向导和点矩阵报表向导允许生成报表中选择数据字段,创建组。

我们通过标准报表向导创建一个报表。

点击“文件|新建”菜单,选择标准报表向导,弹出向导窗口:可以看到,这个窗口有多个页标签。

第一个页中选择数据源;可以选择任何可用的数据源,也可以创建一个新的表——tabel或query。

点击new table或new query按钮,弹出数据源向导窗口。

在此我们选择customers数据源,点击“下一步>>”按钮。

下一页选择可以显示的字段。

左边列表中显示可以使用的字段,右边列表中显示的是已经选择的字段。

通过“加入>>”“全部加入>>”“<移除”“<<全部移除”按钮选择或移除可以显示的字段。

通过按钮,调整选取的字段的顺序。

下一个页创建一个或多个组。

这个示例中添加一个Group Header,Group Footer两个组。

这个页我们点击“下一步>>”按钮,跳过此页。

下一页设置页面属性。

选择显示方式,在右边可以查看显示样式。

最后一页设置显示模式。

点击“完成”按钮,创建如下报表:13.2、数据连接向导这个向导在当前报表中添加一个新的数据库连接。

这个向导将添加一个TfrxAdoDatabase组件到报表中。

点击“”按钮,弹出标准数据库连接窗口。

并设置登陆用户和登陆密码。

用户可以直接添加一个TfrxAdoDatabase组件建立连接。

13.3、新table向导这个向导可以在报表中加入一个新的数据表的连接。

用户选择表,并可以设置过滤条件。

fastreport c#初级教程之报表预览、打印、导出

fastreport c#初级教程之报表预览、打印、导出

fastreport c#初级教程之报表预览、打印、导出创建的报表可以预览,打印和导出到报表可以支持的格式。

这些在报表预览界面都可以实现。

图中数字说明: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使用教程之图表

fastreport使用教程之图表

fastreport使用教程之图表FastReport允许用户插入chart制表组件到报表中,这样,在FastReport 面板上的“TfrxCharObject”组件就必须应用上。

这个组件基于“TeeChart”动态库,在delphi中需要将它包含在工程中。

我们通过以下示例先进行简单说明,连接DBDemos中的countory表,数据内容如下:在delphi环境中创建一个新的工程,添加“TTable”,“TfrxChartObject”,“TfrxDBData”,“TfrxReport”组件,并设置属性值:Table1:DatabaseName='DBDEMOS'TableName='country.db'frxDBDataSet1:DataSet=Table1UserName='Country'进入到报表设计器页面,并连结设置数据源。

在报表的设计页上放置一个“chart”组件,并调整其大小(18X8cm)。

双击组件,打开组件的编辑器窗口。

char编辑器区域说明:1:chart结构,一个chart包含有几个制表系统。

2:组件监视器,显示所选组件的属性。

3:连结chart的series的数据属性。

开始的界面显示如上,首先添加一个或几个series,在1区点击按钮,添加一个Pie。

有许多可用的不同的类型的series。

添加一个系列之后,3区被激活。

首先选择数据源,设置Label和pie字段。

点击确定按钮,关闭编辑器窗口,然后预览。

还如何改良以下报表呢?首先,将数据按升序方式进行排序。

再次进入编辑器,选择要设置的series,在3区设置选项。

1、chart数据中数字的限制上面的制表看上去非常拥挤,在chart中有特别多的值,而有些看不见。

FastReport可以设置显示数据的限制性。

因此不被限制的值可以在制表中显示。

在我们的示例中,包含18个数值,而最多友8个能显示,键入编辑器,进行设置。

fastreport 子报表的用法

fastreport 子报表的用法

子报表是指在主报表中嵌入其他报表作为一个子元素进行展示的功能。

在FastReport中,子报表的用法非常灵活,可以满足各种不同的报表设计需求。

本文将详细介绍FastReport中子报表的用法,包括如何创建子报表、如何在主报表中嵌入子报表、子报表的数据绑定等内容。

一、创建子报表在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文件、文本文件、开放文本文件、开放表单文件。

FastReport4-动态报表制作

FastReport4-动态报表制作

FastReport4 动态报表制作注:1、窗体报表控件FR:TfrxReport;frDB:TfrxDBDataset2、调用自定义函数:GetPrnFieldWidth(ADOQ_List); //取得查询结果中各字段宽度3、全局变量:Prn_FieldWidth: Array of integer; //打印时各字段宽度数组通过GetPrnFieldWidth修改其值4、uses PRINTERS;代码:procedureTFrm_yppf_prn_pfd.ToolButton3Click(Sender: TObject);Var//DataPage: TfrxDataPage;Page: TfrxReportPage;PageTitle:TfrxReportTitle;PageHeader:TfrxPageHeader;//Band: TfrxBand;MastData: TfrxMasterData;PageSummary:TfrxReportSummary;Memo: TfrxMemoView;i:integer;MLeft:Real;//表头字段在mastdata中的左边距PaperWidth:Real; //纯报表(不含边距)宽度(毫米)begin//清除报表FR.Clear;//1====添加页Page:=TfrxReportPage.Create(FR);Page.CreateUniqueName;//创建唯一名称//Page.SetDefaults;//设置默认字段大小, 纸张//自定义纸张大小//Page.PaperWidth:=210; //纸张宽//Page.PaperHeight:=297;//纸张高Page.PaperSize:=9;//a4纸Page.Orientation:=poPortrait; //纸张纵向//Page.Orientation:=poLandscape; //纸张横向Page.TopMargin:=25;//上边距Page.BottomMargin:=15;Page.LeftMargin:=15;Page.RightMargin:=15;//2====添加一个报表标题栏PageTitle:=TfrxReportTitle.Create(Page);PageTitle.CreateUniqueName;PageTitle.Top:=0;PageTitle.Height:=140; //留出空白行//得到报表不含边距的宽度(毫米)转换为像素时需乘以3.77953//SetBounds中用的是像素值PaperWidth:=(Page.PaperWidth-page.LeftMargin-page.RightMargin)*3.77953; //添加标题memoMemo:= TfrxMemoView.Create(PageTitle);Memo.CreateUniqueName;Memo.HAlign:=haCenter;//左右居中Memo.VAlign:=vaCenter;//上下居中Memo.Font.Size:=14;Memo.Text := '药品批发单';Memo.Height := 40;Memo.Align:=baWidth;//伸展坐标到标题栏的宽度//摘要第一行Memo:= TfrxMemoView.Create(PageTitle);Memo.CreateUniqueName;Memo.HAlign:=haLeft;//左右居中Memo.VAlign:=vaCenter;//上下居中Memo.Text := '单号:'+LEdit_dh.Hint;Memo.Height := 20;Memo.Frame.Typ:=[ftLeft,ftRight,ftTop,ftBottom];//显示边线Memo.SetBounds(0,60,PaperWidth/3,20);//Memo:= TfrxMemoView.Create(PageTitle);Memo.CreateUniqueName;Memo.HAlign:=haLeft;//左右居中Memo.VAlign:=vaCenter;//上下居中Memo.Text := '单位:'+LEdit_dwmc.Text;Memo.Height := 20;Memo.Frame.Typ:=[ftLeft,ftRight,ftTop,ftBottom];//显示边线Memo.SetBounds(PaperWidth/3,60,PaperWidth/3,20);//Memo:= TfrxMemoView.Create(PageTitle);Memo.CreateUniqueName;Memo.HAlign:=haLeft;//左右居中Memo.VAlign:=vaCenter;//上下居中Memo.Text := '批发金额:'+LEdit_SumPfj.Text;Memo.Height := 20;Memo.Frame.Typ:=[ftLeft,ftRight,ftTop,ftBottom];//显示边线Memo.SetBounds(PaperWidth/3*2,60,PaperWidth/3,20); //摘要第二行Memo:= TfrxMemoView.Create(PageTitle);Memo.CreateUniqueName;Memo.HAlign:=haLeft;//左右居中Memo.VAlign:=vaCenter;//上下居中Memo.Text := '结算方式:'+LEdit_jsfsmc.Text;Memo.Height := 20;Memo.Frame.Typ:=[ftLeft,ftRight,ftTop,ftBottom];//显示边线Memo.SetBounds(0,80,PaperWidth/3,20);//Memo:= TfrxMemoView.Create(PageTitle);Memo.CreateUniqueName;Memo.HAlign:=haLeft;//左右居中Memo.VAlign:=vaCenter;//上下居中Memo.Text := '制单人:'+LEdit_zdr.Text;Memo.Height := 20;Memo.Frame.Typ:=[ftLeft,ftRight,ftTop,ftBottom];//显示边线Memo.SetBounds(PaperWidth/3,80,PaperWidth/3,20);//Memo:= TfrxMemoView.Create(PageTitle);Memo.CreateUniqueName;Memo.HAlign:=haLeft;//左右居中Memo.VAlign:=vaCenter;//上下居中Memo.Text := '制单日期:'+LEdit_zdrq.Text;Memo.Height := 20;Memo.Frame.Typ:=[ftLeft,ftRight,ftTop,ftBottom];//显示边线Memo.SetBounds(PaperWidth/3*2,80,PaperWidth/3,20); //摘要第三行Memo:= TfrxMemoView.Create(PageTitle);Memo.CreateUniqueName;Memo.HAlign:=haLeft;//左右居中Memo.VAlign:=vaCenter;//上下居中Memo.Text := '操作员:'+UserName;Memo.Height := 20;Memo.Frame.Typ:=[ftLeft,ftRight,ftTop,ftBottom];//显示边线Memo.SetBounds(0,100,PaperWidth/3,20);//Memo:= TfrxMemoView.Create(PageTitle);Memo.CreateUniqueName;Memo.HAlign:=haLeft;//左右居中Memo.VAlign:=vaCenter;//上下居中Memo.Text := '打印日期:'+DateToStr(Date)+'^^^'+TimeToStr(GetTime); Memo.Height := 20;Memo.Frame.Typ:=[ftLeft,ftRight,ftTop,ftBottom];//显示边线Memo.SetBounds(PaperWidth/3,100,PaperWidth/3,20);//Memo:= TfrxMemoView.Create(PageTitle);Memo.CreateUniqueName;Memo.HAlign:=haLeft;//左右居中Memo.VAlign:=vaCenter;//上下居中Memo.Text := '';Memo.Height := 20;Memo.Frame.Typ:=[ftLeft,ftRight,ftTop,ftBottom];//显示边线Memo.SetBounds(PaperWidth/3*2,100,PaperWidth/3,20);//=3==添加Pageheader (表头)PageHeader:=TfrxPageHeader.Create(Page);PageHeader.CreateUniqueName;//PageHeader.Top:=PageTitle.Height+120; //其总是紧随PageTitle之后PageHeader.Height:=20;//添加表头memoGetPrnFieldWidth(ADOQ_List); //取得查询结果中各字段宽度MLeft:=0;for i := 0 to ADOQ_List.FieldCount - 1 doBeginMemo:=TfrxMemoView.Create(PageHeader);Memo.CreateUniqueName;Memo.HAlign:=haCenter;Memo.HAlign:=haCenter;Memo.VAlign:=vaCenter; //上下对齐Memo.Frame.TopLine.Style:=fsSolid;Memo.Frame.BottomLine.Style:=fsSolid;Memo.Frame.LeftLine.Style:=fsSolid;Memo.Frame.RightLine.Style:=fsSolid;//边线格式Memo.Frame.Typ:=[ftLeft,ftRight,ftTop,ftBottom];//显示边线 Memo.Text:=Trim(ADOQ_List.Fields[i].FieldName);ifi<ADOQ_List.FieldCount-1 thenBeginMemo.SetBounds(MLeft,0,Prn_FieldWidth[i]*7.5,20);EndElseBegin //最后一列时 ,页面剩余宽度都给他Memo.SetBounds(MLeft,0,PaperWidth-MLeft,20);End;MLeft:=MLeft+Prn_FieldWidth[i]*7.5;//下一列左起位置End;//4=====主数据 (记录)MastData:=TfrxMasterData.Create(Page);MastData.CreateUniqueName;MastData.Top:=PageTitle.Height+PageHeader.Height; MastData.Height:=20;MastData.DataSet:=frDB;//添加 memoMLeft:=0;for i := 0 to ADOQ_List.FieldCount - 1 doBeginMemo:=TfrxMemoView.Create(MastData);Memo.CreateUniqueName;//Memo.HAlign:=haCenter;Memo.HAlign:=haLeft;Memo.VAlign:=vaCenter; //上下对齐Memo.Font.Size:=9;Memo.Frame.TopLine.Style:=fsSolid;Memo.Frame.BottomLine.Style:=fsSolid;Memo.Frame.LeftLine.Style:=fsSolid;Memo.Frame.RightLine.Style:=fsSolid;//边线格式Memo.Frame.Typ:=[ftLeft,ftRight,ftTop,ftBottom];//显示边线 Memo.DataSet:=frDB;Memo.DataField:=Trim(ADOQ_List.Fields[i].FieldName);ifi<ADOQ_List.FieldCount-1 thenBeginMemo.SetBounds(MLeft,0,Prn_FieldWidth[i]*7.5,20);EndElseBegin //最后一列时 ,页面剩余宽度都给他Memo.SetBounds(MLeft,0,PaperWidth-MLeft,20);End;MLeft:=MLeft+Prn_FieldWidth[i]*7.5;//下一列左起位置 End;//5=====页尾PageSummary:=TfrxReportSummary.Create(page); PageSummary.CreateUniqueName; PageSummary.Height:=20;//添加summary memoMemo:= TfrxMemoView.Create(PageSummary); Memo.CreateUniqueName;Memo.HAlign:=haLeft;//左右居中Memo.VAlign:=vaCenter;//上下居中Memo.Top:=0;Memo.Left:=0;Memo.Height := 20;Memo.Font.Size:=10;Memo.Text :=;Memo.Align:=baWidth;//伸展坐标到标题栏的宽度//FR.DesignReport();exit;//显示报表FR.ShowReport;end;自定义函数代码://==================================================== ===========//====得到欲打印的查询结果中各字段的最长值,结果保存在Prn_FieldWidth====== //==================================================== ============ProcedureGetPrnFieldWidth(MyADOQ:TADOQuery);Vari:integer;FindSql:String;BeginSetLength(Prn_FieldWidth,MyADOQ.FieldCount);//先使表头字段宽度等于标题宽度fori := 0 to MyADOQ.FieldCount - 1 doBegin//ADOQ_List.Fields[i].FieldName 默认为宽字符型 widestring,用length只能取得其字符长度//用Pchar可将其转换为AnsiString类型,这样length可以取得其字节长度Prn_FieldWidth[i]:=Length(Pchar(Trim(MyADOQ.Fields[i].FieldName )));MyADOQ.Next;End;//再用查询结果各字段结果长于标题着替换fori := 0 to MyADOQ.FieldCount - 1 doBeginFindSql:='SELECT Max(Datalength('+ Trim(MyADOQ.Fields[i].FieldName)+'))as 字段最长值'+' FROM (' +MyADOQ.SQL[0]+') DERIVEDTBL';DM.ADOQ_Find.Close;DM.ADOQ_Find.SQL.Clear;DM.ADOQ_Find.SQL.Add(FindSql);DM.ADOQ_Find.Open;if DM.ADOQ_Find.RecordCount>0 thenBeginif StrToInt(DM.ADOQ_Find.FieldByName('字段最长值').AsString)>Prn_FieldWidth[i] thenPrn_FieldWidth[i]:=StrToInt(DM.ADOQ_Find.FieldByName('字段最长值').AsString);End;MyADOQ.Next;End;End;。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

fastreport使用入门教程之创建报表
创建报表
我们做一个在运行其使用这些组件建立一个简单报表的示范。

在delphi环境中创建一个新的工程,并加入以下组件:TfrxADOComponents,Tbutton,TfrxReport,TfrxDesigner,TfrxDialogControls,TADOConnection。

设置属性:
ADOConnection1:
LoginPrompt=False
frxADOComponents1:
DefaultDatabase=ADOConnection1
双击设计按钮,定义一个事件函数:
procedure TForm1.Button1Click(Sender:TObject);
begin
frxReport1.DesignReport;
end;
运行delphi,点击设计按钮,进入报表设计器。

简单的列表式报表
在设计器环境中点击新报表,并且换到Data页,放置一个ADOTable组件
到页面上。

注意database属性已经连结到了数据库。

并选择数据表名称:TableName='Customer'
到报表设计页,连接Master band数据源,并在数据树中将数据源字段托到band上合适的位置,调整大小。

界面如下:
设计完毕,点击预览按钮,浏览结果。

同为比较常用的报表工具,FineReport对的创建报表步骤与FastReport有所不同,具体如下:
1.新建报表模板
点击快速工具栏上按键,创建一张空白模板。

2.新建数据集
数据集是FineReport专有的存储通过数据连接从数据库中取出来的数据,数据集是一个二维数据表,可直接在数据集中看到数据表中的字段和数据。

报表左侧下方有模板数据集窗口,列出了该模板可用的所有模板数据集,点击按钮,增加模板数据集。

新建数据集ds1,定义SQL语句为:SELECT*FROM[销量]where地区='${地区}',这样一个带参数的SQL语句,这里的地区是参数名字。

在下方的参数面板中点击刷新按钮,便可以获得数据集参数,给参数设置默认值“华东”,如下图:
点击SQL输入框上面最左边的预览按钮,可以直接预览输入,如下图:
同样的方法,增加数据集ds2,SQL语句为:SELECT*FROM[销售总额],添加完成之后,在数据集面板中会生成2个数据集,如下图:。

相关文档
最新文档