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

用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目录下。

Unity Awards展区“点亮”Unity亚洲开发者大会 DevBox:最实用的移动开发辅助工具包 【技术博客推荐】创客程序员设计实现最小物联网系统 MySQL还是NoSQL:开源盛世下的数据库该如何选择 利用Hadoop Streaming处理二进制格式文件 如果没有强大的API,那么还是与OpenStack兼容吧 企业社交工具为何走向衰退? 封闭还是开放?雅虎禁止用户使用Facebook、谷歌ID登录和使用其服务 【OSTC讲师专访】罗聪翼:付出和回报在开源世界成正比 近匠:“词Ci”——全栈“女神”如何诠释倾城之美 国内首届引擎黑客松Cocos2d-x Hackathon即将开赛! 抛弃CloudStack,GoDaddy加入OpenStack PaaS平台之争:Cloud Foundry是赢家吗? 投资超140亿美元,涨幅达30%,数据密集型应用将占领第三平台 汽车开放平台:看看通用汽车是怎么做API的 Gamebase将推全新跨平台3D游戏引擎Reach3dx 借助API Telegram能否成为第二个WhatsApp 机器学习也感性:90后软妹纸的编程之路 为安防与视频监控而生 西数紫盘首发 秘闻:鲍尔默离职,或与坚持收购诺基亚有关 【OSTC讲师专访】Thomas Yao:开源社区最缺有能力的领导者 对比MySQL,你究竟在什么时候更需要MongoDB 不以“大小”论英雄,对比IBM、AWS,谁才是Hadoop界的MVP? 参加“我们都用JIRA”视频征集大赛 赢取乐视TV超级电视 开发者下一个待开发市场:印度 一周消息树:80%开发者背井离乡,70%经常加班 移动周报:最受欢迎的跨平台开发工具推荐 研发周报:Mt.Gox破产,都是错误编程惹的祸 数据挖掘+人工智能,教育定制化下的学霸量产 通过700合作伙伴的进一步细分,Google变得越来越像微软 一周热点:高薪必备:Hadoop求职者的6大攻略 redhat linux8.0中文版有没有中文的帮助文档 Linux Apache+PHP+MySQL的配置问题?? 马上登陆geniusbible.yeah.net网站 我问一个简单问题 各linux都什么优点 这段代吗怎么写? 分乃身外之物,顺便问一个问题。 在delphi中怎么样把字符串的前后空格去掉 有没有人用vss做版本控制的?? 摩托遇到怪事~~决定研究一下~~有兴趣看看拉~~ 求救:哪位有NotesSQL 2.06 email:frank@southsundin.com API ATCS10_SCO505版本,免费的类似TUXEDO消息中间件,欢迎大家使用!!! what is the MAPI? 一个关于子窗体的问题?请大家帮忙,在线等待! 如何做浮动窗体! 一个不是很难的问题。我却很难哟 请教关于访问Jbuilder7中数据库的问题(急) 突然想到的一个问题,请问大家在认真思考问题的时候都习惯做些什么动作? 在SDI程序中,如何在“框架类”中得到“文档类”的指针? 经常看到图片的上传到数据库,以及如何显示的问题,并且在另一个页面实现指定位置显示多个图片!我整理了,需要来登记! 招聘程序员!!!! 各位老大:请帮助!!!!! 请假两天要扣掉薪水的百分之几? JSP通过JDBC连接ORACLE的问题!!! 简单问题,vb得块注视是什么? 为什么mingw和DJGPP. 的主页总是上不去?? 五笔怎么装?装在什么目录下? 最远的距离 请教关于访问Jbuilder7中数据库的问题(急) JSP通过JDBC连接ORACLE的问题!!!!!!!!!!!!!!! 打印机状态,在线等待,万分火急 modelmaker6这东西是做什么的,那位前辈知道 NOTES在用久了之后,邮箱会变的巨大,几百MB,但即使我将邮件删除,其邮件文件还是那么大,怎么可以让它缩小? 我为程序中的职工设了一个序号,人数有多少序号就有多少。可以一眼就看出有多少人。可是当我在离职表中删除职工时。序号跟着被删除。删除 关于sql的难题。 请问如何用SQL语句更改一个表的字段长度,其他都不变. jsp读取oracle8.1.6数据表中的中文,读出为?,着急啊。 上个100帖子已结,现在再拿100分求从导入到数据库的代码,各位老大帮忙看看。 怎样用程序设置文件夹共享? VB中,怎样实现C中的continue? 注册表与记录登录密码 更新表中某字段的值 请问如何实现像delphi编辑器那样,当输入了关键字后会变成粗体或其它的颜色? 有人需要Delphi调用水晶报表的例子吗? 关于ADO+SQL Server2000数据库备份的问题! vb.net应用程序! SQL语句问题 有关位图的问题? 如何从扫描仪中读图,欢迎讨论 这个问题难者不会,会者不难! 有没有初三的政治书最好是有笔记的? 2011六级求估分八个短对话对5个,两个长对话对七个空对5个,短文十个空对7个,复合式听写单词8对6,句子全错.快速阅读十对6,填空五对3,深度阅读十对4,翻译五对3.完型二十对11作文偏上!四易估分 “乱”字右边的部首怎么打出来啊?3Q 如果人类过度砍伐森林,会给森林的生态系统造成什么影响? 现在橡胶多少钱一公斤?我有个亲戚他家好多橡胶,请问现在哪位哥哥姐姐知道那东东多少钱一公斤?鞠躬~ 如图所示,电源电压U保持不变,滑动变阻器的最大阻值是10Ω,开关S闭合,当滑动变阻器的滑片P在a端时,电流表的示数是0.5A.当滑动变阻器的滑片P在b端时,电流表的示数是2.5A,小灯泡正常发光.则电 我要起个好听的英文网名 油墨用开钛白粉69 改用龙莽996可以吗 标有''10v,4w''的L1与标有''15v,10w''的L2串联接入电路中,只让其中一个正常发光,而另一个发光较暗,就迎接再多大的电压上? 砍伐森林会对人类和动植物 的生活产生哪些影响 龙组词有哪些 数字543 486, where do you come from?where do you come foom? 23分米长的铁丝围成长方形,要求长方形和宽都是整分米数,怎样围成的长方形面积最 2 世博会徽章的英语怎么说 英语翻译 用12分米的铁丝围成长和宽都是整分米数的长方形,面积最大的是多少平方分米,面积最小的是多少平方分米 “勋章” 英语怎么说 英语翻译 英语填空题求助,有图 我们互相交换徽章可以吗?用英语怎么说啊?要礼貌点的! 每年有多少亩森林被砍伐 历史(上册):北京师范大学出版社政治(全一册):人民教育出版社要期末测试题,越多越全越好, 听为什么是口字旁拜托各位了 3Q听是用耳,为何却用口字旁 被砍伐的森林占所有森林的多少 印刷纸的种类印刷纸可以分为哪几种 600字美文摘抄,带摘抄理由!3Q!多给几个, 想给男朋友改个通讯录备注 ,要英文的.大家都知道那个最大限度是14个字母我准备在前面打两个空格 ,所以就只剩12个字母了最好要一个句子 请附上翻译 什么是非涂布印刷纸?我在写一篇关于造纸的论文,如果大家有更好的文章或名人名言或关于造纸的书籍,请多多告诉我给我,请与27日前发表给我! 为什么大量砍伐森林会出现洪水, 有关电功率的计算题目.某电灯上标有 “220V 40W”.(1)把该电器接入110V电源中,计算此时的实际功率.(2)把该电灯和“220V 25W”的电灯并联在220V电源中,哪只灯更亮?为什么?(3)把该电灯和 印刷纸按用途可分为哪些类别? 大雨不会冲走土壤,而会引起严重的水灾.翻译英语. “电话簿”英文怎么说? 印刷纸的种类和这么去区分 一根劲度为400N/m的轻质弹簧,原长12cm,当受到一个大小为16N的压力作用时,该弹簧将缩短到多少厘米?算出来了吗 电话本的英文是什么 彩印厂用到钛白粉吗? 一个口加一个夏是什么字?3Q 森林采伐用机械定义就是这个,帮了个忙的啊,就这几天要交了. 英语翻译这里有通假字,请大家帮我找出来 今老矣,无能为也已.夫晋,何厌之有将免者以告,公令医守之当室者死,三年释其政国之孺子之游者,无不铺今夫差衣水犀之甲者亿有三千明日,徐公来, 一个口在加一个真是什么字啊 我要的是那种硬的橡胶的密度,最好是市场上常用的,价格便宜的.密度 密度? 英语翻译济人之贾人————————立而观之.那个 一个走之底加一个你字怎么打拜托各位了 3Q如题 龙怎么组词 文艺复兴运动给我们的历史启示是什么?美国独立战争给我们什么启示? 求:需要用单位求解的高中物理题 请问:保持的近意词,成果的进意词,思考的进意词! 求一首拉丁风格舞曲的名字,歌词有don't go i know you wanna touch me ,是个女生唱的副歌 是什么stay ei ei ei 的 用英语翻译“现在的砍伐森林很严重,我们应该禁止乱砍伐树木” 砍伐森林后会导致水患,那么森林防止水患的原因有哪些 生产钛白粉的原材料是什么我知道钛白粉就是二氧化钛,只是想知道生产二氧化钛的原材料是什么?以及二氧化钛在原料中所占的成分 日本字怎么打?3Q 橡胶价格什么时候会上涨啊?现在的橡胶价格还不如青菜白菜价格,真是苦了我们这些胶农了,没法过日子了 2011六级估分~听力选择对20个 听词对4个 句子就不算了快速阅读对8个 短文问答对3个 仔细阅读对5个完型对10个 翻译对1 作文算6分百分制大概56分 这样能过吗? 下面几个字怎么打拜托各位了 3Q帮我说下,用什么打出来,按几多下+ 橡胶价格还会涨吗 2011 六级估分快速阅读8个,听力18个,填词4个,句子基本写了,仔细阅读填的3个,选择7个,完形填空12个,翻译一般,作文一般, 日本的‘之’字怎么打?拜托各位了 3Q
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘