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

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

VB用Winsock控件发信Email VB用Winsock实现点对点通信 邮件检查程序(二) -VB资料 邮件检查程序(一) -VB资料 在VB程序中怎样挂断拨号网络 在VB中利用UDP协议编写聊天程序 在VB中模拟实现邮件传输 在VB中实现文件上传 在VB中使用UDP协议 在VB中用Outlook发电子邮件 在程序中打开 Internet 拨号连接窗口 -VB资料 在一个单位内部或通过广域协议(如X.25)互联的行业内部都有几十或上万台计算机互联,用Intrane 在应用中集成浏览器-VB资料 在桌面上建立一个 Internet 快捷键 -VB资料 VB怎样接收电子邮件(POP3协议简介) VB怎样用VB得知系统当前是否处于internet链结状态 VB制作自己的网络搜索软件 自动更新工作站的应用程序-VB资料 自己的IE——用VB制作浏览器 VB6制作Win98风格的工具栏 VB实现窗口的弹出式菜单 用VB做个漂亮的进度条 Cool 3D 浮動按鈕的模擬作法-VB资料 VB 5.0中实现鼠标拖放 VB5.0下工具条的制作 VB5.0中基于桌面的屏幕技巧 VB5.0中实现字体闪烁效果 VB5实现窗口图像缩放、滚动技巧 VB6.0动态加载ActiveX控件漫谈 VB编程步步高-表单篇 VB编程常见问题 辞职信 application.initialize完成了什么 高手来帮忙啊~ 看看java的魅力 如何通过自制程序的编辑框向现有一般应用程序编辑框传送内容? 窗口执行顺序问题,请多帮助,谢谢 如何自动取得server的日期和时间 怎样让文件指针指到文件末尾,必须skipline一行一行跳吗? 我想在菜单前添加图标,使用Bitmap属性但是为何只能载入*.bmp文件而不能使用*.ico文件,我只有*.ico的图标,请问该如何解决。 有新建一个文本文件并给其命名的函数吗,怎么用 我还真不懂呀? 这个COLTYPE是怎么用的呀?你说它怎么得到表中字段的类型呀? 有关存储器(ram,rom)的编址问题。以及32位或更多位芯片的问题。 一些汇编问题。想来问bcb的兄弟{bcb里好象有不少汇编高手} 救命:在安装了sco openserver之后,系统不能启动,先前安装的win98和win2k也不能。 请问如何进行URL译码??? 请问怎样截取一个string中的一段? 请问delphi做的exe最小可以到多少?怎么做? 我想请问一下WINGATE的具体怎样在WIN2000服务器版中进行设置。 ASP的同志们,能不能留一下QQ号码? 请问何处有破解ACCESS2000的程序或源代码呢? 请问要在TEdit.text组件文本串中找出当前光标在第几个字符上怎么办?谢谢! 请问关于dbImage控件的使用方法? 关于HDC及双缓冲的问题? xxxbird(*说你行,你就行,不行也行*),来领“我遇到几个怪问题。。。。。。”中的分 为什么ASP没法向SQL Server中写入数据?代码什么地方错了 大家帮忙找一下,找到我给50分 exe 捆绑机怎么做? 大家谈谈JSP的设计模式怎末了?我有个题目,设计好的大大有奖! 浏览器下的那个进度条是怎么弄出来的? C中的typedef struct和C++中的 struct有何区别? C中的typedef struct和C++中的 struct有 什么区别?谢谢 lastlove(本栏位广告招商中,欢迎投放!),jjdelphi(我真的不懂),jinesc(杂牌军)-(人民军队为人民) 开利息了 一个网页的原代码可以保存到字符串里吗? 有没有各种C++编译器都支持的字符串类型或字符串类? <@> 关于 ProcessMessages 一个想不如大家想,请各位帮忙想个主页的名字吧。 女友23岁,她会选择前途还是爱情?-----一个VB程序员的痛苦 如何实现应用程序与动态库通信??? ----myxfang----偶来贷款了!!!--- myxfang(大富翁银行~业务员~~),都给你了,我可把赌注都压到你身上了 我存钱,没人受理吗?银行业务员在哪? CMainFrame主框架是用来干什么的? myxfang(大富翁银行~业务员~~),我已经结账了,到哪里去取贷款? 怎么释放它? ----myxfang---我给手续费了,我的贷款呢??http://www.csdn.net/expert/topic/203/203903.shtm--- myxfang(大富翁银行~业务员~~),来拿我的骚扰费~ 老师!! 这个动态查询为何总出错? 大富翁银行生意兴隆!恭喜恭喜…… ~~~~myxfang给我们上了生动的一课~~~~ 我被黑了,谁来帮我? myxfang(大富翁银行~业务员~~),我存钱 圆的周长是25.12厘米,求圆的面积 求阴影部分的面积 单位:厘米 圆的周长是25.12厘米 如右图所示,圆的周长是6.28厘米,圆的面积和长方形的面积相等.阴影部分的面积是多少平方厘米?周长? 一个小圆的半径是6厘米,一个大圆的直径是8厘米,大圆和小圆的面积比是: 下图圆的周长是12.56厘米,圆和长方形面积相等,求长方形的场图是这样的:一个圆的4分之1是长方形的一部分 圆的周长、面积的计算公式?圆柱体、圆椎体的体积计算公式? 小圆的半径是3厘米,大圆的直径是8厘米,大圆和小圆的面积的最简整数比是( 一个圆与一个长方形面积相等,圆的周长是18.84厘米,长方形长10厘米,宽多少厘米? 圆的周长和面积计算公式. 在周长是48厘米的正方形内画一个圆,这个圆的周长是多少厘米,面积是多少平方厘米? 一个圆与一个长方形面积相等已知圆的周长是18.84厘米长方形的长是6厘米 长方形的宽是多少 圆的周长和面积的计算公式分别是什么? 在周长是12厘米的正方形内画一个最大的圆,圆的周长是多少厘米? 一个圆儿的面积与一个长方形的面积相等,圆的周长是18.84厘米,长方形的长是六厘米,宽是多少? 圆的周长面积的公式是什么? 一个半圆的周长是25.7厘米,求半圆的面积方程 如下图,圆的周长是50.24厘米,圆的面积与长方形的面积相等,求阴影部分的面积. 一个圆与一个长方形的面积相等,圆周长是18.84厘米,长方形长6厘米,宽是多少厘米? 已知半圆的周长是25.7CM,求半圆的面积. 图中圆的周长是25.12cm,BC=10cm 阴影部分的面积是( ) 见右下图,圆的周长是18.84厘米,圆与长方形的面积相等.长方形的长和宽各是多少? 一个半圆的周长是25.7厘米,它的面积是多少平方厘米 图中圆的周长是25.12cm,圆的面积正好等于长方形oabc的面积的2倍.求阴影部分的面积 一个圆与一个长方形的面积相等.圆的周长是37.68厘米.长方形的宽是9厘米,长是多少? 一个半圆的周长为15.42厘米,这个半圆的面积是( )平方厘米高手快来,一定采纳! 如图,圆的面积与长方体的面积相等,圆的周长是25.12cm,求阴影部分的周长 一个圆的周长是37.68厘米,面积是多少 知道半圆的周长,怎样求半圆的面积.已知半圆的周长是25.7、要求详细,, 图中的4个圆的周长都是37.68厘米,求阴影部分的面积. 一个圆环的外圆周长是50.24厘米,内圆的周长是37.68厘米,这个圆环的面积是多少平方米? 一个半圆的周长是10.28cm,半圆的面积是多少平方厘米还没搞明白, 如图长方形与圆的面积相等,圆的周长是37.68CM,求阴影部分的面积是多少.π取3.14 长方形的面积与圆的面积相等(如图),已知圆的周长是37.68平方分米,长方形的宽是多少分米?如图 大、小两个圆的周长比是5:3.已知两个圆的面积相差32平方厘米,这两个圆的面积各是多少? 如图,圆的周长是31.4厘米,求阴影部分面积.阴影部分面积是那梯形.那梯形的下底是8. 一个圆和一个长方形的面积相等,圆的周长是37.68cm,长方形的宽是9cm,长是多少 有大小两个圆,它们的面积差是160平方厘米,已知两圆的周长比是5:3,大圆的面积是多少平方厘米? 图中四个等圆的周长都是50.24cm,求阴影部分的面积?(6cm不是本题的条件) 下图中长方形和圆的面积相等,圆的周长是25.12厘米,阴影部分的面积是多少平方厘米?周长呢 请问大、小两个圆的周长比是5:3 .已知两个圆的面积相差32平方厘米,这两个圆的面积各是多少? 已知下图中圆的周长是12.56厘米,求阴影部分的面积. 下图中长方形和圆的面积相等,圆的周长是25.12厘米,阴影部分的面积是多少平方厘米? 大小两个圆的周长之比是5:3,它们的面积相差48平方厘米,两个圆的面积分别是多少平方厘米? ` 已知下图三角形的面积是16.28平方厘米.圆的周长都是12.56厘米,求阴影部分的面积?已知下图三角形的` 已知下图三角形的面积是16.28平方厘米.圆的周长都是12.56厘米,求阴影部分的面积? 已知下 右图中圆的周长是二十五点一二厘米,圆的面积正好等于长方形OABC面积的二倍,求阴影部分的面积. 大、小两个圆的周长比是5:3.已知两个圆的面积相差32平方厘米,这两圆的面积各是多少? 下图中,圆的周长是12.56厘米,圆的周长等于长方形的长,求阴影部分的面积 长方形和圆的周长相等,圆周长是31.4厘米,长方形的宽和长的比是1:4,长方形的面积比圆的面积少多少?过程详细 清楚^这个符号能不能用语言来表达一下,本人不太清楚 请看清楚【问题补充 两个圆的周长之和是94.2厘米,已知大圆半径与小圆半径的比是4∶1.这两个圆的面积各是多少平方厘米? 如图,三个等圆的周长都是12.56,那么阴影部分的面积是多少平方厘米 有一个圆与长方形的面积相等,圆的周长是12.56厘米,长方形的长是4厘米,宽是多少厘米? 一个圆的周长是94.2厘米,半径增加1厘米,这个圆的面积增加了多少平方厘米? 已知三个圆的周长都是12.56分米,并且圆心都是三角形的顶点,请你求出阴影部分的面积 圆的周长是25.12厘米,圆的面积正好和长方形的面积相等,长方形的长是多少厘米 甲,乙两个圆的周长比是2比3,其中一个圆的面积是12平方厘米,另一个圆的面积可能是多少,也可能是多少? 三角形面积是16.28平方厘米,圆的周长12.56厘米,求阴影部分面积 右图中圆的周长是18.84cm,圆的面积与长方形的面积正好相等则图中阴影部分的面积是多少平方厘米 甲乙两圆的周长比是3:4,其中一个圆的面积是15平方厘米,另一个圆的面积可能是( ),也可能是( ) 圆的周长是25.12厘米,求正方形内阴影部分面积 右图中圆的周长是18.84厘米,圆的面积与长方形的面积正好相等,则图中阴影部分的面积是多少平方厘米?阴影部分的周长是多少厘米?
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn