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

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

脑洞大开!用Swift写个Material Design组件库 美国最大婚恋网站eHarmony利用Hadoop、OpenStack重构自己 每个Java开发者都应该知道的5个JDK工具 异构计算应用研讨暨OpenCL编程培训在上海和西安成功举行! APIs.io:用来发布和发现API的利器 偏爱MySQL,Nifty使用4个Web Server支撑5400万个用户网站 直接拿来用!十大Material Design开源项目 初探WatchKit,开发者必须知道的6件事! 【MDCC专访】环信CEO刘俊彦:音视频即时通讯将成为技术壁垒 第十七届全国工程建设计算机应用大会在京召开,AMD受邀详解GPU Computing! 哪一门开发语言薪水最高? 借助ArangoDB,带你玩转Google图算法引擎Pregel 【最具价值CTO评选秀】MediaV CTO胡宁:技术女神的自我奋斗 豌豆荚邓草原:如何实现实时响应式平台 必须谨记!Node.js安全开发技巧 聚焦新平台新应用 IBM 2014技术峰会上海站顺利落幕 《近匠》NAGA娜迦信息:移动安全加固定制化 棱镜、飞流、TalkingData三方解读:手游如何高效运营 【MDCC秀场】枕戈待旦——秉持移动开发大潮下的主角思想 Netflix的首席产品官Neil Hun谈推荐系统打造和AWS实践 微信开放WiFi接口,醉翁之意在乎O2O还是大数据? 软硬整合:基于云的微型智能防丢设备Linquet 【MDCC专访】AppCan CTO赵庆华:助力企业快速移动化 使用Bluemix中的Rules服务构建一个酒店预订应用程序 基于IBM Bluemix开发微信公共账号应用 用Cloudant在Bluemix上构建一个简单的文字游戏应用程序 IBM Bluemix是什么? 【最具价值CTO评选秀】纷享销客CTO刘晨:企业移动的技术挑战 【最具价值CTO评选秀】能做存储的超级计算机——任宇翔和以色列团队的创业故事 OpenStack Swift存储策略 分享5个可视化的正则表达式编辑工具 .htm传递参数! 一个比较菜的问题,我的VB6中窗体的name属性没有,请问怎么加入. 简单sql语句求助!!! 如何在vc++中获得当前用户的用户名? 為什麼在我機器上建立與其他機器的oracle連接的bde出錯???連sql server都沒問題,破oracle真亂!!!!! 真气人 急,用TADOTable控件怎么对字段进行查询?请举例说明!谢谢! 用fireworks 4.0制作动画,请问怎么样用一张图片做背景? 在用VC调DLL时报错,error C2171: '*' : illegal on operands of type 'int (__stdcall *)(char *,char [])'怎么办? 一个打包的问题 在表格式的数据窗口中显示image的问题??欢迎讨论,拒绝灌水! 128MB内存跑BCB6好像有点那个? 请问有人知道哪儿有打印条码的源程序吗? 有关INSERT 插入数据到ACCESS 数据库,为什么出错,急,急,急,菜鸟请教,马上给分 vb.Net的较大的Project编译时,经常出现某些.resources文件找不到,为什么?气死人了! 我很菜,望高手帮忙! 小毛头毕业分在工程部,望个为师兄指点应该注意些什么? Java Applet 中变量的问题请教. 这儿看看! 请帮忙看看这是怎么回事? TRIGGER 请问热心人帮帮我这个热心的学生. 如何安装acm控件 到底应该先看VC++技术内姆还是先看MFC深入浅出? 请问如何使打开的窗口在屏幕正中间? 怎样产生一个全局唯一标识ID? 双套超级查询器!!!上传完毕!!! WINSOCK控制问题 编译时出现这中错误提示是什么意思?怎么解决? 请各位热心人帮帮我这个热心的学生. 100分求助。在无向图(图中有闭合的点集)搜索给定两点之间的所有路径。 调用中文输入法,程序如何实现 VS.NET安装:小弟实在是愚笨 怎样添加DNS服务包?? 100分求助。在无向图(图中有闭合的点集)搜索给定两点之间的顶点。 VS.NET安装:小弟实在是愚笨 这样在Java调用Excel程序 如何在nt4.0下查看本机器装了哪些硬件(鼠标,键盘,显示器,图象采集卡等信息) ####VB初学者的小问题,散分100!!##### 谁能告诉我目前java在电信的营账,记费方面或着其他支撑系统的成功应用的例子! 我都三天两夜没睡了,哪为大虾能帮我解决这最后的问题啊?!挥泪大送分了…… 天津参加程序员考试的朋友看一下!!!! 编程技术书籍半价转让 请问scrdeco.exe如何在win2000使用? vc到底该怎么学?! 一个线程有时候会占用CPU资源98%以上呢?求助!!! 知道BoundsCheck是谁作的吗?-Matt Pietrek 《未公开的Windows核心机密》、《Windows 95编程机密》作者,John Robbins《应用程序调试》作 没有房屋租赁证,在北京如何办暂住证?有办法吗? Unicode编码怎样能转换成汉字? 关于刷新事件的捕获,请大家多多关照。 我在98下面用豪杰超级解霸读mpeg4时,为什么会快速播放呢? 储油罐按建造材料分为几种?具体是哪几种? 红领巾指答案是什么 描写孩子天真可爱的古诗词需要作者 青蛙1年吃几只虫子 用on the spot(立即)造句 梦到别人吃蜘蛛, 1只青蛙1天吃多少虫子? 表示学习需要持之以恒的成语,中间有个“有”字的 关于小孩外貌的词语有哪些?急用!小孩的! 梦见蟑螂爬身上是什么意思? 为什么青蛙不吃死虫子呢? 梦到蜘蛛梦到我下楼梯时,楼梯中间结了张蜘蛛网,而且中间有一只黄色毛茸茸的大蜘蛛盘在网中心,(我平时都很怕蜘蛛的)然后我就想从侧面强行冲过去,结果我过去后我感觉网也跟随我破了,背 英语翻译1.君之所知也 之:2.夜缒而出 而:3.朝济而夕设版焉 焉:4.且贰于楚也 贰:要准确、详细的翻译,包括虚词的具体用法等 数学画图软件像这种图还有物理图怎么画? site与spot区别site=spot?别复制 简单通俗说下即可 如果有一天你离开家乡,你最惦记的是什么?用比喻句写 数学画图工具谁会用 这个和有什么区别?这个 括号内是读取数据库的 哪个位置?具体4,0各代表什么.asp编程 英语翻译邻之厚,君之薄中的厚薄怎么翻译这是词类活用,厚薄本来是形容词但在这里作名词翻译是请注意形容词作名词,页就是说翻译成名词 数学画图工具画几何的,不是函数画图工具粘到WORD不太清楚,WORD本身细节画不好,谁有办法啊? site:163.com与site:www.163.com有什么不同啊?为什么要这样做? 烛之武退秦师的重点字词翻译 谁给介绍一块好的数学画图工具要花数学图形 十里长街送总理谁知 《烛之武退秦师》重点字词翻译及词语的用法 请问这个图像怎么画高中数学 《十里长街送总理》的作者是谁如题 家乡的大道,好像什么 比喻句 英语翻译如 :故如此 而动如初 匠师如其言其 :患其塔动 密使其妻 匠师如其言 人皆伏其精练之 :钱帅登之 乃以瓦布之 喻皓之妻 塔动之因 便实钉之 《十里长街送总理》全文 用抛物线的焦点F在X轴的正半轴上,A(m,-3)在抛物线上,且|AF|=5,求抛物线的标准方程.9:50之前必须解决! 英语翻译 平加偏旁组字(要3个)急求! 持之以恒的四字成语我有急用 英语翻译不可能一个一个去试想行不行得通吧? 我能加个偏旁组成西子,再组词.平:(评)(评价);( )( );( )( ).我:( )( );( )( );( )( ).乔:( )( );( )( );( )( ). 描写坚持的成语 梦到很多蟑螂好不好? 平字加偏旁 形容坚持不懈的四字成语 一个圆形的石油储油罐底面一周的长度是50.24,它的底面积是多少?3分钟回答 平可以加什么偏旁 晚上做梦梦见蜘蛛,请问如何解此梦? 一个侧面是正方体的圆柱形储油罐底面积是10平方米,它的侧面积是多少? 例如定语从句中,place,room,point,situation,condition的先行词是when~定语从句中还有没有什么先行词要固定的用wh-引导(when什么的) 小石潭记大多数词语的解释!乐 见 全 蔓 蒙 络 缀 参差 可 许 空游 澈 佁然 俶尔 翕忽 斗 蛇 犬牙差互 合 寂寥 凄 寒 以 清 居 in the spot 和 on the spot 的区别 第一次世界大战在哪个地方开始的,place place place! 小石潭记重点词注释 alex on the spot歌词马达加斯加2中的这首歌的歌词 美国城市地图里有些地方是XX PLACE,指什么?比如结尾是ROAD,BLVD我都知道什么意思,那PLACE指什么? 的加点词解释 on the spot 美国有的地区属于Census-designated place 简称CDP,这个Census-designated 解释这些词在《小石潭记》中的意思 太阳红领巾指的是什么 红领巾迎着太阳的太阳是什么意思 小石潭记的一些词语意思心乐之:皆若:同乐:斗折蛇行:凄神寒骨:以其境:【原文】从小丘西行百二十步,隔篁竹,闻水声,如鸣佩环,心乐之.伐竹取道,下见小潭,水尤清冽.全石以为底,近岸, on the 红领巾在太阳底下呈现红色,是因为红领巾----------------物理知识
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘