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

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

投资可再生能源:Google 2亿美元投资风力农场 构筑商业生态系统 阿里巴巴集团全面变革组织架构和管理体系 美国众多银行网站遭DDoS攻击 疑似伊朗所为 构建高可扩Web架构和分布式系统实战 CES2013 AMD发布移动处理器路线图和环绕计算概念 对话Linus Torvalds:大多黑客甚至连指针都未理解 PaaS玩家们,怎么演好自己的角色? Apple高管表态:低端机绝不是iPhone的未来 Web开发人员应该知道的IE 10兼容性问题 一周消息树:CES2013揭幕 科技巨头纷纷发力 2012专利排行榜 IBM位列第一、Google增长最快! 微软赞黑客并称Windows RT越狱非安全漏洞所致 周报第46期:GitHub历史上最糟糕宕机事故回放及反省 著名计算机黑客Aaron Swartz自杀身亡 移动周报:移动互联网行业技术趋势前瞻 旁门左道:让移动游戏下载量暴涨的邪门功夫 可植入身体:“可穿戴计算”时代来临 Web服务器份额:Apache仍居首,Nginx将超IIS 防税务欺诈:挪威财政部将开源收银机代码 响应式设计实战:3人+1.5个月 IE10优化版cnBeta诞生记 不听乔布斯劝告:“不专心”的Google照样干得好 躲过一劫!苹果不锁杂志类APP介绍截图 Oracle发布软件更新修复Java漏洞 设计师将吞噬工程师吗? 开源产品系列:小巧灵活的Web框架web.py Windows Server 2012 VHDX格式揭秘 Rovio将赶超Zynga 成为全球最受欢迎游戏公司 Netflix基于AWS的大数据平台Hadoop架构解析 微软开始提供Windows Embedded测试版系统 Aaron Swartz自杀原因存疑 引发互联网连锁反应 重金吸引开发者 BlackBerry10应用36小时增1.5万 在MFC中出现libcmtd.lib(crt0.obj) : error LNK2001: unresolved external symbol _main错误的可能有几种,如何解决? 有没有对音箱价格了解的,也许你懂一点就能回答我的问题。 求助:如何设置Jet OLEDB:Database Password的属性 .mdb数据库的字符型字段不能超过50个字符,但是我要存入更长的字符于一个字段该怎么办呢? 我只安装了Rose,Vss,却常有提示:虚拟内存不足,我在“设置”中改为499mb,还是没用 HtmlInputFile的缺陷,还可以用什么控件或方法来做? 问一下wdl格式的文件用什么软件可以打开? 先来的得分。OVERRIDE 和 OVERLOAD 的区别究竟是什么?谢谢! ip地址的添加, 大家看看什么原因出错???SOS 又是一个巨简单的问题,怎么偶老是问这样的问题? 为何会这样? 谁能帮我用PB做一个学籍管理系统 大家都来发表意见:我因为职业道德问题,被迫辞职 谁能开导开导小弟,各位大哥帮帮忙吧。我真没得混了。 在VB中如何把图片存储到SQL Server 的数据库中 请问CDialogBar用鼠标拖动改变其大小(这时其大小并没变化)时,将触发什么事件? capboy:为什么我加入了memfile.h后编译回出这样的错误: 我为什么在2000svr下,安装realserver7.0,装不上???(请高手帮忙。) 如何编写象datagrid一样的控件?大家给点建议。 jb6中怎么象JDK中一样编译类哦? 关于非阻塞通信的一个问题!(BSD系统,非WSA...) 哪里有power builder 8.0正式版的下载 我为什么在2000svr下,安装realserver7.0,装不上???, 想用opengl作动画,那本书好?谢啦! 如何才能实现类似PHOTOSHOP的标尺? 有没有方法可以获得所有的消息常量? 各位大虾,请问如何抓屏,就是只抓窗口内容的那种,感激不尽 这样define有什么好处? 对同不端口能不能用多个socket与多台机器建立通信?? 如何判断DataSet中是否为空~!! 求用TAPI通讯示例! 一个很好的访问统计系统,但是希望高手能修改的更完善一点 ACCESS的问题 大家都是怎么管理记录的唯一性的啊? 苦恼………… 怎样截获窗口的最小化、最大化、关闭按钮和双击窗体的标题栏的响应事件??? 如何判断DataSet中是否为空~!! 有没有人在用或会用FreeBSD,能不能回个话? 哪里有pb8.0正式版下载? crystal report 8.0装完之后,为什么在PROJECT ADD里找不到crystal report? ListView的背景怎么改变?要求显示的内容为透明的? 我想找个工作,请指教! 重复这个字符为什么不能运行呢? 能不能这样访问property? 大型的邮件系统,支持5万用户 菜鸟求助 command.exe vs cmd.exe;regedit.exe vs regedt32.exe区别?fat32上能装win2000? VC中怎么调用template类。。,知道者请进 capboy:麻烦你能再发一个用memfile例子改写的网络播放器的例子给我吗? 今天心情好,问题基本解决,散分! vb中怎么样将excel模板保存成以今天的日期为名的excel文件 如何在文件夹下放一个.htm文件,使得打开文件夹时需提供密码才能打开? 浓硫酸在加热条件下才与铜发生反应.二氧化锰在加热条件下才与浓盐酸发生反应.浓硫酸、浓硝酸在加热条件下才与碳发生反应.……………………………………………………某些氧化剂在加 请问:食用少量石灰对人体有害吗? 为什么滑动摩擦力和拉力无关? 氧化剂,发生氧化反应, 石灰场发石灰时散发出的白烟是什么?对人体或环境有害吗? 旅馆房间内电话号码有可能不是当地的号码么为什么 我住在北京的一家旅馆内 但房间内电话号码归属地却是南京呢? 老人该配模拟助听器还是数字助听器? 下列变化中,必须加入氧化剂后才能发生反应的a Fe2O3---Fe B Fe--FeCl3c HCl--NaCl d MnO2--MnCl2 如图所示,水平拉力F是19.6牛顿,刚好能使196牛顿的物体在水平桌面上匀速前进,求桌面对物体滑动摩擦 逆战爆炸箭头好还是燃烧箭头好我喜欢玩PVE 你们觉得哪个好 总觉得两个都好 下列反应需要加入氧化剂才能发生的是A.Br2→NaBrO B.K2O→K2CO3 C.K→KOH D.Cl2→HCl可是为什么A不对?急·· 数字编码 这个方程怎么解. 初三化学的各种燃料燃烧的公式只要燃料的例如酒精什么的,不要其他的! 石灰对人体有害吗 逆战大都会怎么可以开出燃烧箭头或者爆炸箭头?不知道的别瞎说! 大神们来快(1) (3)题 如图,用10牛的力拉重为100牛的物体在水平地面上以2m/s的速度匀速前进,物体与地面的摩擦力为物重的0.24倍则拉力的功率为?w,装置的机械效率为? 逆战大都会打狗有多少几率打出燃烧箭头 英语四级的成绩单上的身份证号码错了,这张成绩单还有效吗? 亚硝酸钠 吃多少会死鸡吃了亚硝酸钠会怎样? 用水平拉力使重为100牛的物体以0.5米/秒的速度匀速前进.已知物体与地面间的摩擦力是20牛.Q;(1)在一分钟内拉力使物体移动了多少距离(2)拉力的大小.需要点过程,越快越好, 1、2、3题 平房墙壁上白色的类似石灰渣的是什么,对身体有坏处吗 强氧化剂与强还原剂不一定能发生反应,能不能举一个例子啊? 刷墙(用石灰)对身体有害吗? 墙壁为什么要涂石灰?墙壁涂石灰除了美化还要什么作用? 求目前所有的强氧化剂和强还原剂 房间放生石灰对身体有害吗? 光子有无质量? 强氧化剂还原剂求浓硫酸与铜的反应方程式 石灰粉有吸潮作用吗,为什么电箱里放石灰粉 光子是什么东西,有质量吗要回答确切 一物体以1m/S的速度做匀速直线运动,摩擦力是10N,当速度增加到5m/s时摩擦力是多少?求救! 人类最终会进化成什么样子呢? 光子的大小光线由光子构成,一个光子究竟有多大?应该如何描述它的体积和密度? 求四级成绩!忘记准考证号了!是否可以通过身份证号查询到? 人类还会进化吗?会进化成什么样子?我用手机提问的 假设光是由光子组成的,那光子的生命周期是多长,光子的运动轨迹,光子的能量,质量,体积等等 能不能帮忙查以下四级成绩?准考证号忘了,身份证号行不行? 人类回进化成什么样子?人类会进化成什么样?是科学家说的矮矮的,头大脚小吗? 光子有质量吗?物体接近光速时,质量变为无限大,所以惯性为无限大,要改变它原来的运动状态就要对其施加无限大的力,所以任何有质量的物体都不可能超过光速.但是,由波粒二象性可知光可以 英语四级忘了准考证,用身份证号,可以查成绩吗?印象中,上次查四级成绩的时候(在99宿舍网),好像可以用身份证号查询,是准考证和身份证二者选一.我想知道用只用身份证号码可不可以查询 求大神帮忙做一道线性代数题?急 光子是否具有质量和体积 农药和水的质量比是1:10.现有这种药水共22千克,农药和水分别有几千克? 大学线性代数!第一第二题, 地理求大神解答! 10年12月英语四级忘记准考证号码 怎样通过身份证号码转换 山东省 第三题,线性代数的题目,求大神帮忙 这分别是哪三座城市 用身份证号查询四级准考证号江苏省 准考证号忘了有这样的网站吗 线性代数题,如图. 亚硝酸钠食用多了会怎样 我的四级证丢了,准考证号码都忘了,只有身份证,能查到成绩和准考证号码? 求大神做个线性代数题, 农药的危害 (要全!)一定要多,越多越好. 生石灰和水再一起为什么会变热? 数字编码有哪些 正确使用农药有何益处,滥用农药有什么危害只要重点间简短
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘