收藏 分享(赏)

快速报表系统FastReport4用户使用手册_修改版(3).doc

上传人:精品资料 文档编号:9785035 上传时间:2019-09-04 格式:DOC 页数:30 大小:10.99MB
下载 相关 举报
快速报表系统FastReport4用户使用手册_修改版(3).doc_第1页
第1页 / 共30页
快速报表系统FastReport4用户使用手册_修改版(3).doc_第2页
第2页 / 共30页
快速报表系统FastReport4用户使用手册_修改版(3).doc_第3页
第3页 / 共30页
快速报表系统FastReport4用户使用手册_修改版(3).doc_第4页
第4页 / 共30页
快速报表系统FastReport4用户使用手册_修改版(3).doc_第5页
第5页 / 共30页
点击查看更多>>
资源描述

1、互式报表,意思是在预览窗口用户可用通过鼠标在组的标题上单击,以实现展开和关闭详细信息内容。这里有一个示例:你在第一次生成报表时可以控制全部组内容是展开还是缩回。默认情况全部组不展开。如果想展开,可以设置 ExpandDrillDown 属性为 True,或者通过右键上下文菜单进行操作。35、行数让我们的示例显示每个组的行数,在没有 band 上添加一个 text 组件,并设置系统变量line。如图:浏览结果,可以看到每个组分别显示序列号。快速报表用户使用手册 4.02如果想让第二个 band 的页码成顺序号延续,可以在 band 中将line改为line#。显示结果如下图:36、函数集在分组报

2、表中,一般情况下需要显示一些结论性的内容,如分组数,组内行数等。为了这个目的,FastReport 提供了一些函数集。Sum 返回公式的和Max 返回给定参数的最大值快速报表用户使用手册 4.03Min 返回公式的最小值Avg 返回公式的平均值Count 返回数据行数除 count 函数外的其他函数的语法如下,以 sum 为例:sum(公式,band ,标记)sum(公式,band)sum(公式)参数解释:公式要显示数据的公式band数据 Band 的名称标记一个字节,可以是以下数据之一或他们的和1:计算时包含不可见 Band2:对计算值进行累计公式是必需的参数,其他是可选的,不过,有歧义时,

3、应该使用 band 这个参数。Count 函数的语法:Count(band,标记)Count(band)参数说明和上面类似。对所有的函数有一个规定,就是只适用于数据 Band 或数据 Band 的 Footer Band.集合函数是怎么工作的呢?让我们做一个示例:数据 Band 的“ItemTotal”字段显示当前表单的总计,在 groupfooter 中添加一个 text 组件,输入sum(,masterdata1)。显示结果如下图:快速报表用户使用手册 4.04函数中“标记”参数的目的就是为了有些报表部分数据 Band 可能隐藏不可见,不管是否可见都应该计算在范围内。在我们的示例中,如果我

4、们设置数据 Band 的 visible 属性为 false,则打印时是不可见的。为了计算这些不可见的数据行,需要添加上这个参数。SUM(,MasterData1,1)可能显示如下结果:如果设置标志参数为 2,显示以后结果不在重新设置。每个显示结果为运行期的总和,如:SUM(,MasterData1,3)3 就是 1 和 2 的和,意思是计算不可见的数据,并对计算结果不进行重新复位,打印报表结果:快速报表用户使用手册 4.0537、页和报表的统计通常,我们的一个需求可能是显示一个报表或一个页面的汇总信息。这种情况下我们可以使用这些函数。将我们的例子做一下改变进行说明:我们在报表上添加了一个“报

5、表合计”band,并在上面添加一个 text 组件,组件中输入sum 函数,还添加了一个 PageFooter Band.这是我们需要的。显示结果为:快速报表用户使用手册 4.0638、插入汇总函数至此我们只是手工在 Text 组件中输入这些汇总函数,下面我们说说另外一种输入方法。首先,我们可以使用“system text”组件输入这些汇总函数,事实上,它是和“text ”组件是相同的。只不过他又一个快捷输入数据的方法。我们可以一步一步的选择函数类型,数据 Band,和数据库字段,或者公式等我们需要的值。一样可以设置执行不可见的 Band 的数据 和 执行总数复选标志。可以通过点击文本编辑器的

6、 按钮,打开汇总函数设置窗口。快速报表用户使用手册 4.07第 四 章第四章 格式化、加强快速报表用户使用手册 4.0841、格式化输出结果汇总函数的输出结果的一个特性就是没有格式化,就看前面的 sum 的例子就显而易见。如果要格式化输出,可以使用 fastreport 的格式化工具进行设置。选中要格式化的组件,右键菜单选择“formatting ”,或在对象查看器中设置“displayformat”属性,弹处格式化工具窗口。可以看到,窗口左边是变量目录的列表,有边是格式化列表。我们选择数字目录,格式化选择$1,234.50。格式化的参数参考 delphi 的 Format 函数。点击确定按钮

7、,再次预览:42、内嵌格式化上面的示例中,是格式化一个组件。每次工作只是作用在一个组件上。如果有两个公式,并且有不同格式输出,就需要内嵌格式化。上边的示例中,改变 footer 中组件的大小,并输入一下内容:快速报表用户使用手册 4.09Total: SUM(,MasterData1)Number: COUNT(MasterData1)总和和订单数分别显示如下,但结果不是我们需要的:为了正确显示,需要对数字进行分别格式化。在行内使用格式化符号进行设置,写在公式方括号前。修改组件的内容:Sum: SUM(,MasterData1) #n%2,2mNumber: COUNT(MasterData1

8、)预览,看一下结果是否正确:使用格式化符号,语法如下:公式 #格式化符号 注意公式和#之间应该有至少 1 个空格,格式化符号如下:#n 格式化符号:对数字文件进行格式化#d 格式化符号:对日期进行格式化#bFalse,True:对布尔型结果进行格式化格式化符号对数字类型可以参考 delphi 中的 Format 函数,对日期型可以参考 delphi 中的FormatDatetime 函数。以下是 Format 中涉及格式:数字格式:%g%2.2f %2.2n %2.2m日期格式:dd.mm.yyyy 快速报表用户使用手册 4.010dd mmm yyyy dd mmmm yyyyhh:mm h

9、h:mm:ss dd mmmm yyyy, hh:mm 数字格式化字符串中间可以加入“,”或“-” 。这些符号何以用在整数和小数之间的分割符号。#b 格式化是“布尔”型,这个用在用逗号分开的两种结果的格式化。第一个就是“否” ,第二个就是“是” 。如果记不住这些格式符号和符号的意思,可以有一个自动设置环境,让用户配置。在“Text”组件的编辑器中点击“ ”组件。即可打开格式化编辑器。选择格式化内容,点击确定,格式化符号就插入到组件中,这样如果光标在方括号的前面或后面,格式化符号即可正确插入。43、条件显示“Text”组件就有根据不同的条件而显示不同的颜色设置的特性。我们使用一个带分组的示例做个

10、示范:让汇总的结果大于5000的用绿色显示。选择带“Group.“ItemsTotal“” 字段的组件,或点击highlight。打开条件编辑器,输入条件,指定字体和背景颜色。点击确定按钮。预览结果显示如下:快速报表用户使用手册 4.011注:指定的条件公式中,结果是和组件连结的数据表字段的值,同理,也可以设置“ 5000”条件公式,44、分行显示数据行的颜色使用条件显示,可以非常容易的生成两行具有不同颜色。创建一个新的报表,在“Master Data”Band 中添加一个 Text 组件,调整大小为 Band 的大小,让他占用整个 Band。根据行号设置组件的显示颜色,选择组件,在条件编辑窗

11、口中设置条件公式如下:mod 2 = 1注意:如果在组件中选择 C+脚本,应该写成如下,使用 c+脚本语言:% 2 = 1将条件设置的颜色设为灰色,边框不可见。再在上面添加其他的组件:快速报表用户使用手册 4.012预览报表,显示结果:快速报表用户使用手册 4.013第 五 章第五章 嵌套报表快速报表用户使用手册 4.01451嵌套报表有时一些复杂的报表结构中,需要报表的特殊位置显示特殊的数据。通过 FastReport 的Band 可以创建这些报表。创建子报表可以使用“ 子报表组件” 。插入这种组件后,就会在设计器中添加一个新的页面,它连接着这个子报表组件。镶嵌式报表就像一系列的多页报表系统

12、。唯一不同的就是嵌套报表显示在基础报表中特殊的位置,而不是在他的后面。当输出报表时,当 FastReport 系统遇到“SubReport”组件,FastReport 引擎,输出关联的设计页,然后输出报表的其他部分。还可以在子报表窗面上添加子报表,增加嵌套层数。注意:可以增加嵌套报表,但最多有 6 层数据。52、设计子报表你可以在同一 Band 上放置两个或更多的“SubReport”组件。这样允许报表设计中,输出数据可以有不同的长度,不同的宽度,不同的高度。如你所见,报表在输出全部子报表后,生成报表结构。子报表也可以使用各种对齐方法属性。53、子报表中的限制既然子表是主报表的一部分,他又不能

13、在包含以下Band:“ReportTitle/ReportFooter”、“PageTitle/PageFooter/PageBackground,”和“ColumnTitle/ColumnFooter.”。把这些Band是可以放在主表单上,但是报表系统是不能对其进行处理。同理,嵌套表的选项设置一样不被理会,因为报表输出的时候,主要用到的是主表单的选项。不能把组件放在“subreport ”组件的下面。快速报表用户使用手册 4.015当显示子报表的数据时,报表系统将用子报表的内容覆盖“subReport ”组件下面的位置。打印可能会出现以下情况:如果要在 subreport 下面显示数据,可以

14、使用 child-band。在需要多个子报表的情况,这种方法一样适用,54、PrintOnParent选项“subreport”组件又一个属性“printonparent”属性,根据情况有需要。默认属性为 false。通常子表显示在主表的 band 上,父 Band 不依赖于子 Band。不进行拉伸。如果“printonparent”属性设为 true,则打印输出报表的子报表到主报表的包含有“subreport”组件的 band 上。你可以使 Band 可以随内容进行拉伸。快速报表用户使用手册 4.016快速报表用户使用手册 4.017第 六 章第六章 脚本快速报表用户使用手册 4.018Sc

15、ript 是一种高级程序语言,他是报表的一部分。报表运行的时候,脚本语言也运行。脚本用于处理报表数据,例如,隐藏不需要的数据;脚本也用于处理对话框等属性。脚本语言可以使用脚本组件引擎中的一种语言,当前可以支持以下几种语言:- PascalScript- C+Script- BasicScript- JScript以下是脚本引擎脚本特性变量:标准语言设置:变量、常量、过程、带有变量、常量和默认参数的函数,所有标准操作符(case, try, finally, except, with),数据类型(integral, fractional, logical, character,line,mult

16、idimensional arrays, set, variant),类(方法,事件,属性,索引,和默认的属性) 。类型的描述:脚本中的结构和类。没有结构,没有指针,不能跳转。类型的兼容性。可操作任何组件。用户可以在报表设计器添加程序语言,还可以在线进行调试。61、体验脚本语言FastReport 设计器的 Code 页上有关于语言的一些工具栏。切换到 code 页后,界面如下图:快速报表用户使用手册 4.019注释:1:code 切换页2:脚本编辑窗口3:选择使用的脚本语言类型4:调试工具栏:开始调试运行:运行到当前光标处:单步调试:停止调试:监视变量快速报表用户使用手册 4.020:设置取

17、消断点5:监视窗口6:断点、标签标识显示区。以下是脚本编辑器中可用的按键说明安键 描述Cursor Arrow 移动鼠标PageUp,PageDown 向前、向后翻页Ctrl+PageUp 将光标移到页首Ctrl+PageDown 将光标移到页尾Home 将光标移到当前行的开始end 将光标移到当前行的最后delete 删除光标位置的字符。或删除已选择的字符。backspace 删除光标前面的字符。Ctrl+Y 删除当前行Ctrl+Z 取消最后的操作Shift+Cursor arrows 选择字符Ctrl+A 选择字符串Ctrl+U 将选中的行的内容左移两个字符Ctrl+I 将选中的行的内容右

18、移两个字符。Ctrl+C 复制内容到剪贴板中Ctrl+V 将剪贴板中的字符串粘贴到当前位置。Ctrl+X 剪切选中的内容到剪贴板中Ctrl+Shift+ 设置标签Ctrl+ 跳到标签位置Ctrl+F 查找Ctrl+R 查找替代F3 重复查找或查找替换F4 设置断点快速报表用户使用手册 4.021Ctrl+F2 复位Ctrl+F7 预览变量值F9 运行脚本F7 or F8 单步执行代码62、脚本结构脚本的结构和你用的语言有关,但是他们有一些通用的元素。报表生成可以运行的脚本的标题、主体以及主函数。以下是报表支持的四种语言的例子。PascalScript 的结构#language PascalSc

19、ript / 选项program MyProgram; / 选项/ / “uses” 章解放在其他章节的最前面。uses unit1.pas, unit2.pas;var / “variables” 章节可以放在任何位置i, j: Integer;const / “常量 ”章节pi = 3.14159;procedure p1; / 过程或函数vari: Integer;procedure p2; / 嵌套函数或过程beginend;beginend;begin /主程序 .end.C+Script的结构:#language +Script / 现象快速报表用户使用手册 4.022/ “inc

20、lude” 张解放在其他章节的最前面#include “unit1.cpp“, “unit2.cpp“int i, j = 0; / “variables” 章节可以放在任何位置#DEFINE pi = 3.14159 / “常量 ”章节void p1() /函数 / 没有嵌套函数 / 主程序 .JScripts 结构#language JScript / 选项/ “import” 章节放在其他章节的最前面import “unit1.js“, “unit2.js“var i, j = 0; / “variables” 章节anywherefunction p1() / 函数 / 主程序p1()

21、;for (i = 0; i 符号:PascalScript:if = 10 then .C+ Script:if ( = 10) . 另外一个可选方法就是使用“Get”函数:PascalScript:快速报表用户使用手册 4.025if Get(my variable) = 10 then .C+ Script:if (Get(“my variable“) = 10) . 这些变量值的更新只能使用“Set”函数进行更新。PascalScript:Set(my variable, 10);C+ Script:Set(“my variable“, 10);还可以访问系统变量,如“Page#” ,

22、同样的方法:PascalScript:if = 1 then .C+ Script:if ( = 1) . 66、调用数据表子段象访问变量一样,我们使用 来访问数据表子段:PascalScript:if = Null then.C+ Script:if ( = Null) . 同样可以使用“Get ”函数进行操作。67、脚本中调用汇总函数汇总函数的一个特性就是如果需要在脚本中调用需要和“Text”组件配合。如果脚本单独进行调用,运行报表时会产生错误信息。这是因为这些汇总函数总是依赖于 band 进行运行的。68、报表中变量值的显示要在报表中显示变量的值,首先需要将变量和一个常量值进行绑定:Pa

23、scalScript:varMyVariable: String;beginMyVariable := Hello!;快速报表用户使用手册 4.026end.C+ Script:string MyVariable;MyVariable = “Hello!“;变量值可以显示在“Text”组件中,例如输入Myvarible,变量名称应该是唯一的,意思是在报表中不能和其他组件,常量,函数名称,过程名称等相一致。如果那样,在报表时就会产成一个错误信息。69、事件前面我们测试了报表生成开始时运行的系统主函数。他一般情况下进行一些初始化的配置,初始化变量等。但他对整个报表过程的控制是不足够的。为了尽可能的

24、控制报表系统,每个组件都分别由自己的事件函数。例如,在 DataBand 中可以设置数据的过滤情况,这样我们在报表时就可以根据条件对数据进行隐藏或显示。让我们示范一下报表生成过程中报表生成和事件的顺序。例如,我们生成一个简单的报表,它包含一个页,一个“MasterBand ”,两个“Text”组件。像前面规定的,主函数在报表的最前面开始运行,然后实际的报表过程才开始运行。在报表的开始, “Report”组件的“OnStartReport”事件被调用,页面打印预览之前,页面的“OnBeforPrint”事件被调用,这个事件在报表每个页面生成之间都调用一次。Databand 生成事件调用顺序:1:

25、“OnBeforePrint”事件被调用2:Band 组件上的其他组件的“OnbeforePrint”事件被调用。3:添加组件内容,然后调用组件的“OnAfterPrint”事件。4:计算 Band 的位置,高度,进行拉伸5:调用 band 的“OnAfterCaluHeight”事件。6:如果页面没有足够的空间,生成一个新的页面快速报表用户使用手册 4.0277:所有的 Band 和组件显示在报表中。8:所有 Band 上组件的“OnAfterPrint ”事件被调用9:Band 本身的“OnAfterPrint ”事件被调用当连结到 Band 的数据源进行连结后,Band 被打印显示。然后

26、报表生成结束,调用报表页的“OnAfterPrint”事件,在调用 “Report”组件的“OnStopReport ”事件。这样通过不同组件的事件,在报表过程中可以有效的控制报表。610、一个使用“OnBeforePrint”事件的例子我们创建一个报表,显示客户信息。这个报表显示公司名以“A”开头的客户列表。在 delphi 中创建一个工程,添加一个“TTable”组件,一个“TfrxDBdata”组件,一个“TfrxReport”组件,并设置他们的属性:Table1:DatabaseName = DBDEMOSTableName = customer.dbfrxDBDataSet1:Dat

27、aSet = Table1UserName = Customers进入报表设计器,进行编辑:选中 DataBand,并且换到对象查看器中的事件页:在 OnBeforePrint 右边空白处,双击鼠标,生成一个事件处理器。快速报表用户使用手册 4.028同时切换到 code 页,加入了一个空白处理函数。接下来,我们在函数的空白区写下如下代码:PascalScript:if Copy(, 1, 1) = A thenMasterData1.Visible := True elseMasterData1.Visible := False;C+Script:if (Copy(, 1, 1) = “A“

28、)MasterData1.Visible = true;elseMasterData1.Visible = false;运行报表:快速报表用户使用手册 4.029我们来说明几个细节,用户可以同时将一个事件处理函数指定到多个组件上,这种情况下,函数的“sender”参数,就是调用事件的组件。设置一个几经存在的事件函数,可以通过人工录入,或在下拉框中进行选择。如果要取消连结,可以直接选中相关项,按“delete”即可取消。611、在组头打印组的汇总信息这是脚本十分有用的方法,因为一般情况下,汇总信息是在报表全部信息处理完毕后进行的。要则组的开头显示汇总和的信息,一下运算方法可以使用:选中报表选项中

29、的 double pass 选项第一个过程就是将每个组的计算机过保存到数组中第二个过程就是将计算的结果显示在每个组的开头。可以有两种方法来实现。首先在 delphi 中创建一个工程,在表单上添加一个 “TQuery”,一个“TfrxDbData” ,一个“TfrxReport”组件,设值属性:Query1:DatabaseName = DBDEMOSSQL =select * from customer, orderswhere orders.CustNo = customer.CustNoorder by customer.CustNo, orders.OrderNofrxDBDataSet

30、1:DataSet = Query1UserName = Group进入报表设计器,连接数据源。设置double-pass 选项(报表 |选项菜单) 。在报表中添加两个Band ,一个“Group header”,一个“Data band”。在“Group Header”的编辑器中指定条件(“Group.CustNo”数据字段 ),连接databand 的数据源,安排组件位置:快速报表用户使用手册 4.030为了输入汇总值,我们使用了一个“Text”组件,取名:“Memo8”第一种方法:我们使用“TStringList”类存储报表计算结果。把数据类型的值保存成字符串类型,同时第一行保存第一个组

31、的值,第二行保存第二个组的值,以此类推。脚本语言代码如下:PascalScript:varList: TStringList;i: Integer;procedure frReport1OnStartReport(Sender: TfrxComponent);beginList := TStringList.Create;end;procedure frReport1OnStopReport(Sender: TfrxComponent);beginList.Free;end;procedure Page1OnBeforePrint(Sender: TfrxComponent);begini := 0;end;procedure GroupHeader1OnBeforePrint(Sender: TfrxComponent);beginif Engine.FinalPass thenMemo8.Text := Sum: + Listi;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报