Delphi利用ReportMachine报表控件制作小计和总计报表

合集下载

Delphi7报表制作入门

Delphi7报表制作入门

Delphi报表制作入门Delphi 7.0 中实现报表的方法称为 Rave。

Rave 报表是一种基于组件的可视化报表设计工具,使用它可以简化设计过程,提高设计效率。

只要将 Rave 报表组件添加到应用程序中后,就可以创建各种类型的报表。

本文将以 ADO 组件连接数据库,向读者介绍怎样利用 Rave Report5.0 快速设计报表。

还是赶快行动起来,体验一下 Rave Reports 的强大功能吧!1.准备好范例数据库,笔者使用 Access 建立数据库Student.mdb,创建一个表:StuInf(学生基本信息),包含Sno(学号),Sname(姓名),Sex(性别),Class(班级),Birthday(出生日期)... 等字段,所有字段名先使用括号中的中文;再写入几条数据备用。

2.启动Delphi7.0 建立一个工程,在窗体上放置一个ADOQuery 控件,设置其ConnectionString 属性,连接数据库 Student,设置 SQL 属性为“select * from StuInf;”,Active 属性为 True 。

为了能看到库中的数据,再往窗体上放置一个DBGrid 和一个 DataSource ,设置相关属性,使 DBGrid 中显示数据。

3.在窗体上添加一个 GroupBox,设置其 Caption 为“选择报表式样”;往其中添加两个 RadioButton ,Caption 分别为“条列形式”、“表格形式”;往窗体上添加一个按钮,Caption 为“显示报表”。

现在,准备工作已经完成了,保存工程,下面开始报表的设计。

4.在窗体上添加一个RvDataSetConnection组件,设置其DataSet为ADOQuery1,这样,就提供了 Rave 报表与数据源之间的连接。

5.在 Delphi 主菜单的 Tools 中选择 RaveDesigner 启动 Rave Reports5.0。

delphi制作报表

delphi制作报表

批最近刚刚做完一个项目,使用到了RAVE进行报表设计,在使用中也查阅了很多资料,但总觉得网上的资料过于分散,而且都不是很全面,所以决定将如何在Delphi 7中使用RAVE报表写成几篇文章,由于本人从小语文学得不好,不是写作高手,这次也是第一次写这样的文章。

希望看到这篇文章的网友能多提意见,欢迎大家指教。

可以给我留言。

言归正传,在我们要给用户编写的软件中往往需要生成各种各样的报表,报表是数据库中数据的最终表现形式,在Delphi 6以前,编写报表都在使用Qusoft公司的Quick report,而且在Delphi中集成了Quick report。

在Borland Delphi™ 7 Studio 集成开发环境(IDE)的控件面板中取消了Quick report项,取而代之以Nevrona公司Rave Reports项,且在Tools中有Rave Designer 5.0 。

打开Rave Designer 5.0,我们可以如图所示的一个报表设计界面,开发人员可以开发出符合用户要求的报表来,而且这个报表的设计、使用与Delphi集成开发环境几乎是完全的一样,这可能是Rave与其它的报表组件最大的外观上的不同。

我在使用中下载了Rave Reports v5.1.3,你可以在这里或者这里下载,在写这篇文章时,上面上已经发布了Rave Reports 6.0,不过文章还是以Rave Reports v5.1.3为准。

打开Delphi,可以控件面板看到如图:Delphi7下的Rave打开Tools中的Rave,看到的报表设计界面如图:Rave5的报表设计界面一、Rave5的报表设计界面首先,介绍一下Rave的报表设计器的各组件和相关的属性。

Rave Designer集成开发环境的界面包括标题栏、菜单栏、快捷工具栏、组件栏和一些窗口:·标题栏显示了当前的工程名,位于最上部。

·菜单栏,一些功能可通过菜单栏的菜单命令实现。

Delphi数据库程序设计教程 第13章 报表的设计

Delphi数据库程序设计教程 第13章  报表的设计

13.1.3 TQRBand组件

该组件是一个重要的组件,当为TQuickRep组件设置Bands属性时,报表中就 会创建TQRBand组件。
1. BandType 该属性用来指定BandType组件的边条类型。边条的属性决定了最后在报表中该边 条出现的位置。 2. ForceNewColumn 该属性使报表在打印该边条前创建新的一列。 3. ForceNewPage 该属性使报表在打印该边条前生成新的一页。在列表类型的报表中,如果设置该 属性为True,那么报表的每页将仅仅显示一个记录。在主/明细报表中,如果设置 该属性为True,会使报表的每个主记录生成新的一页,与该主记录相对应的明细记 录均在该页中。 4. LinkBand LinkBand属性用来将报表和边条连接起来,被连接的边条作为当前的边条显示在同 一页中。当前页没有足够的空间打印该边条时,将生成新的一页。 5. HasChild属性 该属性为当前边条生成下一级边条。例如在主/明细报表类型的报表中,为某一个 字段设置该属性,将生成一个边条作为下一级的边条。

该组件是设置报表外观的主要组件,将TQuickRep组件加入到窗体中,它可以定位到窗 体上并扩展成全页的尺寸,给报表一个全页显示的可能。
(1) Bands 该属性是TQuickRep组件比较重要的属性,Bands属性是一个属性集。在设置这些属性时,每设 置一个属性为True,在TQuickRep组件中就会增加一个相应的TQRBand组件。 (2) DataSet 该属性指定主报表将从哪一个数据集中获得数据。对于简单的列表类型的报表中,通常使用一 个数据集。对于一个主/明细表,该属性应该设置为主数据集。 (3) Options Options属性集中有三个属性。FirstPageHeader为True时,在报表的第一页生成页头边条; LastPageFooter为True时,在报表的最后一页生成页脚边条;Compression为True时,以压缩格式 存储报表。 (4) Page 该属性集可以控制报表中页的大小、边、页的方向等。 (5) PrinterSettings 该属性集用来选择想要打印的副本数、打印的起始页和终止页,还可以选择是否需要重复打印 以及打印输出的途径。 (6) ReportTitle 该属性在标题的边条中显示标题,但通常要由TQRSysData组件来设置报表的标题。 (7) ShowProgress 该属性可以在准备和打印报表期间显示一个过程对话框。

DELPHI报表制作技巧20篇

DELPHI报表制作技巧20篇

Delphi 3 中报表的制作
Borland Delphi 是当今优秀的 Windows 可视化开发工具之一,今年 5 月份推出的 Delphi3 是一个真正的 32 位开发平台, 比 Delphi2 增加了不少定制控件。Delphi 3 没有捆绑 ReportSmith 报表制作工具,但同时增加了 Qreport 组中报表制作控件 的功能,使制作报表更加方便灵活。在 Delphi3 中除了可以采用 Qreport 组中报表制作控件来制作报表外,还可利用打印机画 布直接向打印机输出报表。下面将详细介绍这两种方法。 用打印机画布制作报表 Delphi 引进了画布的概念,使向打印机输出和向屏幕的输出具有相同的方法,直接向打印机的画布输出线条和字符串,即可制作 出任意规格的报表。首先,把支持打印机的 Printers 单元手工加到 uses 域里,然后在打印事件中调用 Tprinter 对象来制作报表。 下面我们来看一个实际例子。假设在当前 Form1 上有一按钮名为 Print-rep;在 Dialogs 控件组选取一 PrintDialog 控件加到 Form1 中,命名为 printdg1;在 Additional 控件组中选取一 StringGrid 控件加到 Form1 中,命名为 temsgrid1,设其网格为 10 行 10 列,并假 设已完成了在 temsgrid1 控件中显示一 10 行 10 列的数据库表数据的准备工作,然后在 Print—repClick 事件中打印报表。程序 示例如下: procedure TForm1.Print-repClick(Sender:Tobject);
var I,j,cp,ph,pw,w,h:integer; beginif printdg1.Execute then //打开打印对话框 begin for cp:=1 to printdg1.coter do begin orientation:=poPortrait; //设置纵向打印方式 title:=‘打印报表例子’;//打印任务标题

Delphi利用ReportMachine报表控件制作小计和总计报表

Delphi利用ReportMachine报表控件制作小计和总计报表

Delphi利⽤ReportMachine报表控件制作⼩计和总计报表最近在做⼀个Delphi的发货清单的打印程序,其中涉及到需要计算清单的⼩计和总计的功能,⽂字难以表达清楚,上图吧:报表第⼀页的⼩计计算当前页⾯的商品价格总和,总计⽬前和⼩计⼀样是计算截⽌到当前页⾯的所有商品的⾦额和,下图为最后⼀页:这下⼤家明⽩了吧,就是要实现这样的报表。

废话不多说了,开始讲解我的思路:1.既然要计算⼩计,就是每页的⾦额和了,加⼊ReportMachine的计算⽂本框(TRMCalcMemoView),然后设置要汇总的字段值为数据字段“factSum”,然后选择计算⽂本框的属性⾯板中的“CalcOptions”选中“统计Brand”为要汇总的主项数据,统计类型为“合计(Sum)”,如图所⽰:2.最难的部分就是总计的计算,这不能简单的⽤计算⽂本框就能解决的,于是不得不⽤ReportMachine 的代码来处理,也就是在总计的⽂本框的OnBeforePrint事件中计算之前的⼩计⽂本框的值的和,然后赋值给总计⽂本框显⽰,先看下设计的报表:红⾊⽂字为两项总计的⽂本框的Name属性值。

下⾯是ReportMachine中⾃定义的OnBeforePrint事件函数代码如下:unit Report;varlValue,tValue: Double;//lValue=⾦额总计 tValue=税额总计procedure Memo1_OnBeforePrint(Sender: TObject);beginlValue:=lValue+CalcMemo1.CalcValue; //CalcMemo1为⾦额⼩计的⽂本框 TRMMemoView(Sender).Memo.Text := lValue; end;procedure Memo40_OnBeforePrint(Sender: TObject);begintValue:=tValue+CalcMemo2.CalcValue;//CalcMemo2为税额⼩计的⽂本框 TRMMemoView(Sender).Memo.Text := tValue; end;procedure Main;beginMemo1.OnBeforePrint:= Memo1_OnBeforePrint; //指定⾦额总计的⽂本框的OnBeforePrint事件的处理函数Memo40.OnBeforePrint:= Memo40_OnBeforePrint;//指定税额总计的⽂本框的OnBeforePrint事件的处理函数end;end.上⾯的代码先声明了两个事件函数⽤于计算两个累加的总计的值,然后赋值给相应的总计⽂本框;然后再Main中指定给总计⽂本框的事件,这样当打印总计之前先汇总赋值并打印。

《Delphi报表设计》课件

《Delphi报表设计》课件
Delphi报表可以处理各种类型的数据,包括文本、数字、日期、时间等,并且可以支持各种类型的报表格式,如 表格、图表、图形等。
Delphi报表可以帮助用户更好地理解和分析数据,从而更好地做出决策。
Delphi报表还可以与其他软件集成,如Excel、Access等,从而实现数据的共享和交 互。
简单报表:只包含 基本的数据展示和 格式设置
报表交互:设置报 表的交互功能,如 筛选、排序、钻取 等
报表控件:使用TDBGrid控件实现报表的显示和编辑
报表事件:通过编写事件处理程序实现报表的交互功能
报表打印:使用TQRPrinter控件实现报表的打印功能
报 表 导 出 : 使 用 TQ R E x p o r t 控 件 实 现 报 表 的 导 出 功 能 , 如 导 出 为 P D F 、 E xc e l 等 格式
优化报表 布局:合 理布局报 表元素, 提高报表 的可读性 和易用性
优化报表 交互:减 少报表交 互次数, 提高报表 交互效率
01 检查报表设计是否正确,包括字段、 格式、计算等
02 使用断点调试,查看报表执行过程中 的变量值和错误信息
03 利用日志文件,记录报表执行过程中 的详细信息,便于定位问题
04
利用第三方工具,如SQL Server Profiler, 监控报表执行过程中的SQL语句和性能指标
05 优化报表性能,包括减少数据量、优 化SQL语句、使用缓存等
06 定期备份报表,防止数据丢失或损坏
错误类型:语法错误、逻辑错误、 数据错误等
异常处理:记录异常信息,显示异 常信息,重新执行异常代码
PART FIVE
导出格式:支持多种格式,如PDF、Excel、Word等 导出设置:可以设置导出文件的名称、路径等 打印设置:可以设置打印纸张大小、方向、页边距等 保存设置:可以设置报表的保存路径、文件名等

Delphi中用FastReport制作报表

Delphi中用FastReport制作报表

Delphi中用FastReport制作报表报表作为系统信息的典型输出形式之一,是大多数应用系统非凡是MIS系统的重要功能。

是否具有一个良好的打印功能,往往从一定程度上关系到系统的成败。

Delphi有很强的报表功能,但是它的报表功能还不能满足我们的需要。

于是许多Delphi高手相继推出了不少优秀的报表控件(模块),作为QuickReport的补充,其中FastReport就是一个代表。

FastReport综合了QuickReport和Re portBuilder的优点,个头小,速度快,并带有全部源码。

笔者在开发一个药品治理系统时,用FastReport2.51成功制作出了和药品验收单、药品调拨单一模一样的表单式报表。

下面给朋友们介绍一下。

FastReport2.51下载地址:http ///soft/8805.Html。

报表的需求分析在医院工作的朋友都知道,药品入库时要填写药品验收单,药房工作人员领取药品时要填写药品调拨单。

笔者单位使用的药品验收单和调拨单不是专用的,而是通用的商品验收单和调拨单。

与百货业、电信系统使用的报表不同,它的外形为条形,每张固定可填五种药品,内容包括发货单位、发货单号、收货单位、品名、规格、单位、价格、金额等,一式三联。

综上所述,我们可以把报表设计的需求归纳如下:1. 大小为:长21cm,宽10cm;2. 每张可以打印5种药品,表单下面有本页小计。

3. 多于5种药品时开始新一张表单的打印,不足5种药品时要用空行补足。

报表设计1.打开FastReport的报表设计器,按照图1设计出“药品验收单”。

另外,InHJ、OutHJ、CaHj、LineCount这几个变量分别表示“入库合计”、“出库合计”、“差价合计”和“数据总行数”,在程序中将对这几个变量赋值。

2.按F11键,调出对象查看器,选中Band2,在它的OnBeforPrint事件中输入如下代码:beginif LINE# -1<>0and LINE# -1mod 5=0thenbeginshowBand Child1showBand band1end代码中用FastReport的内置函数 LINE# 取得当前行号,假如满足条件,就显示页头和Child3,开始新的一张表单。

DELPHI编程控制Excel自动生成报表

DELPHI编程控制Excel自动生成报表

DELPHI编程控制Excel自动生成报表摘要Excel是当前最时髦的数据报表制作道具。

本文介绍问号应用DELPHI编程来控制Excel完成数据库Databnse与报表之间的数据交换研讨了报表制作工程中的一部份细节性疑难问题。

关键字DELPHI编程Excel报表引言数据报表作为企事业公司上报和下达的重要消息载体随着消息化建设的不断推进在实际的务工中得到了前所未有的实际运用。

因此数据报表已经成了管制消息操作系统中重要的一项功能并且由于数据的多样性和来访量情况消息的渐增数据报表的操作系统呈现变得愈来愈复杂。

DELPHI编程是唯一高效的可视化数据库Databnse管制消息操作系统开发道具.但是DELPHI编程开发环境中帮助的报表控件在制作复杂报表时显得不够理想不管是以前版本帮助的Quick Report控件组还那样DELPHI编程7帮助的Rave控件组都别让用户对生成的报表停止改动且程式控制很难呈现。

Excel作为现代办公日常的电子表格制作道具以它的易操作性和实战性得到了各业界办公大家的青睐。

本文根据实际实际运用实践介绍利用DELPHI编程编程控制Excel生成报表的各种窍门。

DELPHI编程控制Excel的窍门 1 创建Excel 文档要在DELPHI编程中控制Excel就必需用到OLE自动化。

目前一般采用OLE2来创建OLE对象当激活唯一OLE对象时效劳器程式仅在容器程式内部激活这就所谓的“就地激活”in-place activation。

创建Excel文档时先创建唯一OLE对象然后在对象中建立务工表worksheet如参数createExcel所示function createExcel:variant var v:variant sheet:variant begin v:createoleobjectExcel.Application//创建OLE对象v.visible:true v.workbooks.add-4167 //添加务工表:testsheet:v.workbooks1.sheetstest return v end 2 数据表格控制Excel表格的控制主要包括数据的导入、改正单元格的合并、边框的控制表格的复制、粘贴等。

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

最近在做一个Delphi的发货清单的打印程序,其中涉及到需要计算清单的小计和总计的功能,文字难以表达清楚,上图吧:
报表第一页的小计计算当前页面的商品价格总和,总计目前和小计一样是计算截止到当前页面的所有商品的金额和,下图为最后一页:
这下大家明白了吧,就是要实现这样的报表。

废话不多说了,开始讲解我的思路:
1.既然要计算小计,就是每页的金额和了,加入ReportMachine的计算文本框(TRMCalcMemoView),然后设置要汇总的字段值为数据字段“factSum”,然后选择计算文本框的属性面板中的“CalcOptions”选中“统计Brand”为要汇总的主项数据,统计类型为“合计(Sum)”,如图所示:
2.最难的部分就是总计
的计算,这不能简单的用计算文本框就能解决的,于是不得不用ReportMachine 的代码来处理,也就是在总计的文本框的OnBeforePrint事件中计算之前的小计文本框的值的和,然后赋值给总计文本框显示,先看下设计的报表:
红色文字为两项总计的文本框的Name属性值。

下面是ReportMachine中自定义的OnBeforePrint事件函数代码如下:
unit Report;
var
lValue,tValue: Double;//lValue=金额总计 tValue=税额总计
procedure Memo1_OnBeforePrint(Sender: TObject);
begin
lValue:=lValue+CalcMemo1.CalcValue; //CalcMemo1为金额小计的文本框 TRMMemoView(Sender).Memo.Text := lValue;
end;
procedure Memo40_OnBeforePrint(Sender: TObject);
begin
tValue:=tValue+CalcMemo2.CalcValue;//CalcMemo2为税额小计的文本框 TRMMemoView(Sender).Memo.Text := tValue;
end;
procedure Main;
begin
Memo1.OnBeforePrint:= Memo1_OnBeforePrint; //指定金额总计的文本框的OnBeforePrint事件的处理函数
Memo40.OnBeforePrint:= Memo40_OnBeforePrint;//指定税额总计的文本框的OnBeforePrint事件的处理函数
end;
end.
上面的代码先声明了两个事件函数用于计算两个累加的总计的值,然后赋值给相应的总计文本框;然后再Main中指定给总计文本框的事件,这样当打印总计之前先汇总赋值并打印。

相关文档
最新文档