说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

用Delphi4的QReport部件生成报表

HTML文档下载 WORD文档下载 PDF文档下载
用Delphi4的QReport部件生成报表

---- 用户在使用数据库应用程序时经常要生成报表,利用Delphi 4的QReport 部件,可以帮助我们快速方便地生成报表。这里以一个设备管理报表为例说明如何用QReport部件与Query部件设计从多个数据表中生成报表。

---- 一、 所用数据库

---- 这里用到三个Foxpro数据表,DLBMK(设备大类编码)、SBXHK(设备型号及配置)、BMSBK(设备所在部门),存放在D:\SB目录下。其库结构如下:

---- (一) DLBMK

字段名称 字段类型 解释

1. DLBH N3 设备大类的编号

2. DLMC C20 设备大类的名称

(二)SBXHK

字段名称 字段类型 解释

1. XHBM N3 设备型号的编码

2. DLBH N3 同DLBMK中的DLBH字段

3. SBXH C30 设备型号

4. SBPZ C30 设备配置

5. SBSL N3 设备数量

(三)BMSBK

字段名称 字段类型 解释

1. BMMC C20 部门名称

2. XHBM N3 同SBXHK中的XHBM字段

3. SL N3 数量

---- 利用这三个数据表,要生成一个只有电脑部有而其他部门没有的设备型号的情况。

---- 二、 程序中的部件及属性

---- 程序中有两个窗体:主窗体mainForm与报表窗体repForm。

---- 主窗体mainForm中有两个TButton部件,设置如下:

部件 属性及属性值

PreviewBtn:TButton Caption:预览

PrintBtn: TButton Caption:打印

---- 报表窗体repForm中的部件及属性设置如下:

部件 属性及属性值

Query1: TQuery DatabaseName:d:\sb

Active: True

Qrep1: TQuickrep Dataset:query1

TitleBand1: TQRBand BandType:rbTitle

HeadBand1: TQRBand BandType:rbColumnHeader

DrawLeft : True

DrawRight : True

DrawTop : True

DrawBottom : True

DetailBand1: TQRBand BandType:rbDetail

DrawLeft : True

DrawRight : True

DrawTop : True

DrawBottom : True

ChildBand1: TQRChildBand ParentBand:DetailBand1

DrawLeft : True

DrawRight : True

DrawTop : True

DrawBottom : True

TitleLabel: TQRLabel Caption:设备统计表

DlmcLabel: TQRLabel Caption:类别

SbxhLabel: TQRLabel Caption:型号

SbpzLabel: TQRLabel Caption:配置

SbslLabel: TQRLabel Caption:数量

DlmcDBText: TQRDBText Dataset:Query1

Datafield: dlmc

SbxhDBText: TQRDBText Dataset:Query1

Datafield: sbxh

SbpzDBText: TQRDBText Dataset:Query1

Datafield: sbpz

SbslDBText: TQRDBtext Dataset:Query1

Datafield: sbsl

Shape1~9: TQRShape Shape:qrsVertline

Top:0

Width:1

Query1的SQL属性设置为:

select a.dlbh

a.dlmc

b.sbxh

b.sbpz

b.sbsl

from dlbmk a

sbxhk b

where a.dlbh=b.dlbh and b.xhbm not in

(select xhbm from bmsbk where trim(bmmc)<>’电脑部’)

order by a.dlbh

---- 设置几个TQRband部件的DrawLeft、DrawRight、DrawTop、DrawBottom属性值为True

是为了打印表格边框及横线。利用TQRShape部件,是为了打印出表格竖线。DlmcDBText放置在DetailBand1上,其它几个TQRDBText部件放置在ChildBand1上,Shape1~3放置在HeadBand1上,Shape4~6放置在DetailBand1上

Shape7~9放置在ChildBand1上。

---- 三、 为程序增加代码

---- 1.mainForm窗体中的两个按钮事件

procedure TmainForm.PreviewBtnClick(Sender : TObject)

begin

repForm.Qrep1.Preview;

end;

procedure TmainFormPrintBtnClick(Sender : TObject)

begin

repForm.Qrep1.Print;

end;

---- 2.HeadBand1、DetailBand1及ChildBand1的BeforePrint事件

procedure TrepForm.HeadBand1Before

Print(Sender : TQRCustomBand;

Var PrintBand : Boolean)

Begin

Shape1.Height:=HeadBand1.Height;

Shape2.Height:=HeadBand1.Height;

Shape3.Height:=HeadBand1.Height;

End;

procedure TrepForm.DetailBand1Before

Print(Sender : TQRCustomBand;

Var PrintBand : Boolean)

begin

PrintBand:=bh< >Query1[‘dlbh’];

if PrintBand then

begin

bh:=Query1[‘dlbh’];

Shape4.Height:=DetailBand1.Height;

Shape5.Height:=DetailBand1.Height;

Shape6.Height:=DetailBand1.Height;

end

end;

procedure TrepForm.ChildBand1Before

Print(Sender : TQRCustomBand;

Var PrintBand : Boolean)

Begin

Shape7.Height:=ChildBand1.Height;

Shape8.Height:=ChildBand1.Height;

Shape9.Height:=ChildBand1.Height;

End;

bh应在变量定义部分定义:

Var bh : shortint=0;

---- 几个TQRShape部件的高度(Height)与所在TQRBand 部件保持一致,使竖线打印得整齐。如果在设计阶段调整了TQRBand部件的高度,也不会出现竖线断线或过长的情况。

---- 在DetailBand1的BeforePrint事件中用PrintBand进行控制,可使每个设备大类名称只需打印一次,而不是每个型号都对应打印一次大类名称。因为dlbh字段的值都大于0,bh初值设为0使它与任一记录的dlbh字段的值都不同,以确保第一个大类名称被打印。这样就生成了一个从多个数据表中提取数据,并带有表格线的数据报表。

---- 注:本例工程文件为sbgl.dpr,原程序文件为main.pas和sbrep.pas,若要测试请将dlbmk.dbf、 sbxhk.dbf、bmsbk.dbf三个文件放在d:\sb目录下。

LBS的硬件创新:高德LBS智能硬件编程马拉松圆满闭幕 2014优秀微信开发商评选上线 首批旅游汽车电商房产等行业应用出炉(表) 让梦想照进现实——宝马百度编程马拉松闭幕 IXDC大会:移动交互设计精髓——用户体验 想辨析“马航”等事件真伪,有很多技术和工具可以使用 两倍于IBM的基础设施投资,Google大力发展云服务 听云平台发布移动应用性能黑洞报告 微信开发者大会陶瑾:如何玩转微信支付功能的原理和开发 560亿PV+7.3亿用户,Reddit是如何做到的? 打造安全界的希波克拉底誓言文化 极客的春天来了! Mozilla COO宫力:老牌操作系统如何助力新一代智能电视 App提高用户留存率新招:应用性能监测 韩国手游市场规模超万亿 2014中韩手游项目对接会开幕在即 SanDisk发展之路:专注SSD、推新产品线 AMD发展线路图曝光,欲造500+平方毫米GPU 全球移动开发者:IAP降温,企业应用成待掘金矿 Vuforia 2014 视觉大奖赛:寻找最炫酷AR增强现实应用,迈向巅峰! MapReduce谢幕,谁将成为最终的接棒者? 变身音乐控制器!开源JavaScript库NexusUI 从112台服务器到Q2 50亿基础设施开销,谷歌只用了15年 【技术文章】微信公众平台开发教程新手解惑40则 Qualcomm承诺投入1.5亿美元 扶持中国初创企业 物联网多了把“新板凳” 联想推三款智能硬件 .NET技术+25台服务器怎样支撑世界第54大网站 基调网络发布听云平台:“听”懂App性能 《近匠》豌豆荚李大海:用搜索敲开手机娱乐平台之门 微信开发HTML5轻游戏中的几个坑 【微信大会】企业号、支付功能、智能客服与LBS、电商开发解析 【CTO俱乐部走进海尔】活动图文直播进行中 燃料电池商业化,数据中心或将永不断电? 广告教父的哲学:值得F2P游戏借鉴的8条经验 關於框架 请版主帮忙(怎样将asp中的动态数据填充到有一定格式的EXCEL模板文件中) 一个简单的问题,急! 为大家吐血献上:余世维《成功人士讲座》录像 Tomact设置问题 很简单的“异常”问题 linux vi的绝对路径是什么? 为我即将离开PB和IT行业,散分! 今天是中秋节,还是单身的水友进来坐坐。 哪有Crysrept下载?? Session为什么掉了??急切等待!!! struts中一个页面如何显示多个FormBean? 过节了,散分,祝大家中秋快乐!!!!!! 請問TForm中相當於MFC中OnIdle()的event是什麼 数据库问题,急!!急!急!急!急! CISCO2600的ISDN拔号不会自动断线,怎么办? 谁知道怎么验证一个用户名和一个密码是不是在WINDOWS2000中添加过的?而且正确? 。。。谁能给我发一个“智能狂拼2”的下载连接地址 请求--网页评比规则? 在visual.net上无法调试存储过程。急。求救 asp加密程序 我用SQL server+DElphi中的ADO做数据应用程序,数据库备份后,怎样实现数据库的恢复? 贴子太多了,看不过来了,大力liuri出来讲讲 sqlserver 用 jdbc出错 ,Microsoft][SQLServer 2000 Driver for JDBC]Error setting up static cursor cache 如何在C#中用代码控制本地FTP服务打开和关闭?99分,中秋快乐. 关于dll的问题,在线求教 昨晚,我抱了我MM一下!开心呀!散分! 有什么软件可以使上网不受防火墙的限制? 一个C的图形函数,请问怎样用的? 数据库查询语句执行错误 web页面的activex控件怎么调用服务器上的动态连接库?? 中秋散分 【泰坦】祝大家中秋节快乐!(1) 纯jsp聊天室的页面刷新问题 这个MSDN是不是常说的那个MSDN资料库? 一句sql语句问题 【泰坦】祝大家中秋节快乐!(2) 我的触发器为什么没有响应啊。在线等啊 pb9.0+sql server 2000,怎样制作程序发布? pb给dll传递结构数组的问题。急!!! pb9.0+sql server 2000,怎样制作程序发布? 为什么关闭MSDEV的时候,会导致它占用90%以上的CPU时间??? 如何在代理中同時讓兩個套表同時結案 菜鸟问题:我想把一个CString类型转换成LPBYTE类型应该怎么弄? 如何在JRUN3.1中连接SQLSERVER, 我的web server用的是IIS5 怎么样在JSP中显示 WORD 或 WPS 格式的文件? 如何在servlet 中存储数组用javabean 取数组用JSP显示(在线等,急,谢谢) 如何使Response.Redirect "xxx.htm"打开的网页是满屏显示! 鄙视民工的人,给你讲个故事听。 庆祝中秋佳节,大散分~ 中秋节到了,与大家同庆,散点分!!!祝大家开心呀! 第三套人民币5角尺寸有没有大小我有几张自己收藏的72年的旧5角,比回收来的全新5角短了好多,三套的5角是不是有两种尺寸啊?我在乡下老农手上收的也不大可能是假币 ㄅ一ㄠㄗ 请问这个是什么意思呢? 不翻译出来,我知道它是古代中文音标,求翻译 将20mol 0.5mol/L的H2SO4溶液稀释或100L,则浓度变为将20毫升 0.5mol/L的H2SO4溶液稀释或100mL,则浓度变为 囧都有什么含义 英语中怎样计算周末 若干辆车运送一批货物,若增加三辆,15趟完成,若增加七辆,10趟完成,现加1辆车,几趟运完可以用盈亏做还有一道:太空中有x和y两种细胞,一开始有一个x和20个y,一秒钟内一个x吃掉一个y,同时 为什么雄蜂的精子可以在蜂王体内存活一辈子?为什么雄蜂不采蜜?为什么雄蜂的精子可以在蜂王体内存活一辈子?为什么雄蜂不采蜜--它们不怕被其它蜂赶出蜂群这个唯一的家吗? 工作周总结怎么写啊?我是做工程的.稍微具体一点. 哪些地方会形成汛期?形成汛期的地方又有哪些地方容易有水灾? 请问海啸和洪水的区别海啸和江河上的洪水那些破坏力比较大. 北方汛期是什么时候 哥国小镇妇女发起“合拢双腿运动”促政日媒指韩军独岛演习或为对抗日方发布独英国将女囚犯移至离家近地点服刑 减少美高官指责伊朗国防部欺骗言论遭伊朗媒女子左脸痛2年求医 医师从中取出2公外媒:斯诺登握有美国针对他国情报活动英国“白寡妇”曾住南非豪华产房 水中德国男子将12名亲友关在咖啡馆 与警埃及性侵泛滥 美民间组织绘制“性侵地韩陆军主力直升机因修理零件紧缺无法正墨西哥逮捕一名毒贩 怀疑其牵涉多达7外交部:希望美方妥善处理人民币汇率等外交部:愿共同推动南苏丹局势尽快恢复缓解儿科看病难 上海9所医疗机构成立重庆酉阳桃花源举行首届传统汉服集体婚中方:望南苏丹冲突双方通过谈判和平解俄称西方有关俄威胁出兵入侵欧洲声明纯陕西一男子连续杀害7名独居老人一审被马达勒木和他的汉族儿子别力克北京今夜将喜迎小雨 长江中下游近期多铁路首支郭明义爱心分队在南京火车站成国内棉花专业科研机构在新疆兵团第七师武圣传奇龙极纹身洪荒之明玉李斯与秦王朝特种兵都市纵横暗黑圣魔导网游之圣骑威武龙骑剑仙操尸之术荣耀祭祀寒门称王溪口旅游百色旅游碛口旅游大庆旅游九龙旅游聊城旅游怒江旅游徽州旅游门源旅游西沙群岛旅游贺州旅游
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘