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

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

《最终幻想》之父访谈:我为何转战F2P游戏开发 寓教于乐 11款最适合教儿童编程的学习工具 苹果iPhone6获工信部许可 本月17日在内地发售 使用Redis之前5个必须了解的事情 妆媒体微信公众号背后的酸甜苦辣 TIOBE 2014年10月编程语言排行榜:Dart首次进入前20 Instagram工程师教你如何改善App的性能 利用Neo4j对电影评论进行深度学习情感分析 【简讯】SQLite 3.8.7来了 性能提升超50% 浏览器重定向性能分析经验谈 豆瓣工程副总裁段念:看板方法核心瞄准流程中的“流动性” 【图文实录】CTO俱乐部公开课:探讨如何成为技术团队管理者 资深产品交付咨询顾问何勉谈看板:“以价值拉动”解决敏捷困扰 开源HTML5游戏引擎Frozen背后的技术 MDCC 2014精彩日程、演讲嘉宾、参展开发团队全揭秘(图) Hi,约吗?2014华为开发者联盟沙龙(上海站)火热报名中! 找虐新方向!TinyScreen显示屏打造最小游戏机 精彩继续 MDCC2014首次推出技术训练营 复制器官哪家强?3D生物打印找PrintAlive 电信开放平台应用内计费SDK 助力App小额快捷支付 专心做设计!开源跨平台应用开发框架Appverse Mobile 无线盛宴尽在阿里百川开放大会 医学界的Instagram:加拿大重症监护医生开发照片分享应用 2014中国移动开发者大调查第二批获奖名单揭晓 基于OpenStack的私有云开发部署实践 亚马逊云平台的迁移过程 【干货】微信企业号开发资源集锦 CSS生日快乐:CSS之父Håkon Wium Lie访谈录 好友近2000万,绑定银行卡过千万,日会话近百万,招商服务号成功之道 一名程序员十年技术之路的思考与感悟 聚焦企业号、服务号典型案例 微信开发者大会深圳站正式开启 大哥们,能否告诉小弟,在 ms sql server2000中如何修改 sa 用户的口令 我的超星不能用了!!! 十万火急:PDF文件修改 大哥们,能否告诉小弟,在 ms sql server2000中如何修改 sa 用户的口令.. 作为初学者,每天的问题太多了?帮我看一下下面的小问题 我上午53,下午58.该不会下马吧????/我相知道什么时候才能知道是否已经Pass,什么时候下证? 有关DELPHI6中使用SKINENGINE??? C++ Builder中多国语言的问题 在哪下载到Exchange 2000 Server Resource Kit? 快捷方式损坏怎样修复? bluesky069(菜鸟一族)你帮助我把那个PBL放到蛛蛛的信箱好不好呢?让大家都可以下在的! 请问哪里有w32dsm.exe的教程??? 潘译<>印刷错误百出,令人不忍卒读... LISTBOX的问题?请高手帮忙!!高分向送! 帮我想想这个主键该怎么建SQL SERVER7 如何将控件,恢复init()到初始状态 急救:装有SCO UNIX的硬盘克隆后不能启动系统,怎么办? 如何在FTP的目录下再新建目录?我初学网络编程, 怎样设置ScrollView中的ScrollBar不可见? 有关comboBox问题??????急!急!!! 有那位朋友对ADO控件调用T-SQL的链接服务器或存储过程的命令有所了解,或知道怎样取链接服务器的相关信息 真诚的向大家请教一个问题!!先谢谢了 redhat linux7.2安装完成后,怎么没有工具栏 已知manager是employee的子类,那么这么写Employee epy=new Manager()为什么合法? 第五次提出这个问题:如何通过DELPHI调用SQL SERVER 过程向SQL SERVER 存入图象。 为什么我在新闻聚焦中发表不了评论? 在VB里怎样用ADO存贮Access的Memo型字段? 誰有在PB下用powersock做的聊天程序? SQL的好书是什么呀?难道就没有人有体会? vb怎样格式化硬盘?? 做个《曹操传》之类的游戏需要多少投资? 关于sfc(系统文件扫描)的问题 高分求解,大虾请进 买了java程序员大本营的请进!!!! 请大家陈说学msce的前途 如何使用ProgressBar casting在java中是什么意思啊? querymode 查询器不稳定吧? 各位兄弟姐妹,在长沙拿3K是个什么水平,和沿海比怎么样,还需不需要跳槽? 想知道用程序免费发手机短信吗? 请问各位软友哪里有介绍C++Builder控件属性,方法和事件的资料。 高分相赠!!!求解我爱背单词2001共享版注册码!!! 我的XP不能上网了,添加163连接最后总说无法更新通讯簿,不能成功 如何添加纪录? 想学如何用程序发手机短信吗? 请问过滤条件filter怎么用?? 使用微软SQL Server的Select时,怎么写才能检索从N条-M条的记录(也就是说直接检索,而不是全部检索后取其中的一部分.) 如何通过程序得到系统的所有热键。谢您了。 关于CSICO防火墙515-R的问题?急 想知道在程序中如何发手机短消息吗? 求助在VC中怎样用串口控件MSComm1??(我在VB和DELPHI中用过,但不知道在VC中怎样用) 反函数的公式与运用方法? 五点作图法 几何作图法 java中怎样绘制正弦函数图象?原题:在文本框中输入函数y=sin(ax)中a的值,点击draw按钮画出函数图形.求大虾指点. 移动测速电子狗工作原理 固定测速预警原理了解了 那么移动测速原理是什么呢 哪位高手解答下 谢谢 3相4线120平方电缆1米多重? 正弦函数高一数学 塑料转子流量计的工作原理是什么? 120平方300米铜电缆180千瓦能用么 一道高一数学题 有关正弦函数图象如图为f(x)=Asin(wx+y) (0,根3)(2π/3,0)w>0,0 铜的电阻率是几? 120平方380电缆20米距离可多少千瓦中央空调用 一台发电机,输出的功率为8000KW,所用的输电线的电阻是15欧,当发电机的输电电压为100KV时.求导线上的电流,输电线上的损失的电压与电功率. LZB玻璃转子流量计的工作原理是什么啊? 煤焦化产生的黄烟是什么物质 1500千瓦功率,距离500米,电压380伏,需要用多大的五芯电缆? 反函数到底有几种表达式? 五点法作图一定要先列表吗? 中国哪里盛产硅铁,锰铁回答的地方可以两者都盛产也可以单独盛产某一种(具体到某个省) 互为反函数的运算法则有什么关系 2.5平方电线可以承受多少安培电流?同样,多少瓦的功率? 哪里可以出口锰铁我想出口大量锰铁,请问哪里可以办? 汽车的空气流量计坏了,发动机会出现什么问题?具体最好,谢谢 1平方的电线可以走几个安培的电流?同样1KW 大致走几个安培的电流? 锰铁是什么样的 汽车空气流量计有故障为什么会加不起油? 270平方电缆可以承受1000安培的直流电流吗 什么是65锰铁? 汽车空气流量计有哪几种空气流量计主要有____._______.______.______四种~ 高炉喷煤热滞后现象是怎么回事? 三角函数图像中的五点作图法如果是y=sin(2x+6/π)的那五个点怎么求,要详细过程 汽车空气流量计空气流量计是做什么用的,国内有什么公司做这个东西做的比较好的. 单片机delay函数延迟时间计算,delay(80);为什么是600us左右?函数定义void delay(unsigned int t){while(t--);}主函数中delay(80);为什么是600us左右? 三角函数f(x)=Sin(2x+2分之根号3)的五点法作图怎么求点 汽车空气流量计作用? 120平方毫米铜电缆承受多少安电流 三角函数画图的问题我知道sinA的图要用五点法来画,但是如果变成 2sin(A+2)之类的就不会画了,不知道要怎么列表,可以告诉我这类题要怎么列表画图吗? 已知功率,电压怎么计算需要多少平方的电线的公式 高炉上料为什么是不连续的 放了一批矿或者焦炭总要隔断时间才上? 70平方规格的铝芯电线/缆 电流电压 函数y=[1-sinx-2sin^2(4分之派-2分之x)]/4sin2分之x的最小正周期是 反函数求法Y=1/X+1的反函数要有过程 怎么根据功率查电线规格 函数f(x)=sinx/(sinx+2sin(x/2))为什么周期是4pi,偶函数?是因为上下都是奇函数,所以整个是偶函数吗?周期怎么算 120KW“电加热”要用多大的电缆线工程用电 ..最好有画图说明,某海岛上一个观察哨A在上午11时测得一轮船在海岛北偏东60度的C处,12时20分测得轮船在海岛北偏西60度的B处,十二时四十分轮船到达海岛正西方五千米的E港口,如果轮船始终 差压变送器测流量的问题?差压变送器通过测节流装置2端的压力差可以计算出管道流量.但是管道的压力貌似分为动压和静压2种,差压变送器测的是动压差还是总压力差呢.我知道管道充满液体 串联电加热电缆主要在什么情况下使用? 已知f(1+cosx)=cos^2 x,求作函数f(x)的简图 用差压变送器测流量今天看到差压变送器说明书上说,可以用差压变送器来测量流量.请高手讲解一番.水平管道和垂直管道有什么区别. 120KW用多大电缆 我有三个箱子 每个箱子大概是40KW 三个是120KW 每个箱子分用多大电缆!我都用220V电压不用380的··3个箱子都用220V的电压设备都是220V的.我现在跑了一根电缆4X70的铜芯电缆!不知 高炉冶炼主要技术经济指标有哪些 已知函数y=2sin(π/6-2x),则函数的周期为___,单调区间为__ 总功率120KW,进线需要多少平方MM的电缆,又需要多少A的空气开关? 3. 高炉冶炼希望高效能,低消耗,产品质量好,请简要总结高炉强化冶炼有哪些手段,采用这些手段的科学依据 书上说:函数F(X)的反函数的对应法则是F的负1次方,什么原因?推导出来的?老师也是这么说的,可是为什么要表示成这样啊,为什么不是F的*或者是F的#一类的,而要用-1引起歧义呢?第二个回 煤干馏→(箭头上下分别为Cao,电炉)可以得到乙炔吗煤干馏之后经过什么样的反应可以得到乙炔?条件有氧化钙和电炉 高炉冶炼铬铁的方法 求反函数.顺便写哈公式. 煤干馏→(箭头上下分别为Cao,电炉)可以得到乙炔吗煤干馏之后经过什么样的反应可以得到乙炔?条件有氧化钙和电炉08上海高考化学第28题 高一数学正弦函数的图像与性质
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn