分享
 
 
 

在VB6.0中实现动态统计报表

王朝vb·作者佚名  2006-01-08
窄屏简体版  字體: |||超大  

在利用VB开发MIS系统的过程中,经常需要制作动态统计报表。本文就如何实现动态数据源下的分组交叉统计报表进行阐述,并结合实例给出编程指导。

在VB6.0的数据环境设计器中,我们可以利用“添加命令”一项来连接报表所需的数据源,同时利用“添加命令”属性中的分组与合计功能设计分组交叉统计报表的数据源,至此我们可以设计简单的数据存在于单一表静态数据源下分组交叉报表,对于数据存在多表的复杂的动态数据源下的分组交叉报表来说,仍实现不了,实现该功能的关键在于构造一个符合动态数据源要求的中间表。下面以一管理系统中工程成本统计报表的实例来说明如何实现动态数据源下的分组交叉统计报表。

一、报表要求与分析

该报表要求列出在指定的时间段内实施的各项工程所耗器材明细、数量、费用,并且计算各项工程的成本,最终计算所有工程的累计成本。

需求分析后可知该报表是个典型的动态数据源下分组统计报表,分组项为工程名称,要求对每个分组进行子汇总和对所有分组进行总汇总。由于在该系统中的出库单和出库单明细分别存放在不同的表中,因此必须根据报表的要求预先构造一个成本统计中间表,命名为EquipMentCost。相关表结构如图1。

通过对表OutBill和OutBillDetail的分析,发现两者通过关键字OutBill 相联,下面通过SQL语句生成中间表EquipmentCost,语句如下:

Insert into EquipmentCost

(Project,Name,Standard,Type,Num,Cost)

select a.project as 'Project', b.name as 'Name',b.standard as 'Standard', b.type as 'Type',b.num as 'Num', b.numb.price as 'Cost' from Outbill a left join OutbillDetail b on (a.outbill=b.outbill)

where a.OutDate>=date1 and a.OutDate<=date2

date1 和 date2 变量用来指定时间,注意插入前要先清空该中间表的所有数据。

二、利用数据环境设计器生成工程成本报表的初始模板

打开一个数据环境设计器,在其属性表单中设置其名称属性为EnvCatv,并添加一个数据库连接到当前库Catv,连接名称为CatvConn。在当前库连接下单击右键,选择“添加命令”选项,创建一个命令,命名为CmdCost,在该命令的属性页的“通用”选项页上设置SQL语句如下:

Select  from EquipmentCost

单击“应用”按钮察看效果。

随后对该命令进行分组,右键单击该命令,选择“属性”选项,在属性页的“分组”选项页中,将Project(工程名称)字段设置为分组字段,分组名称为GroupCost,单击“应用”按钮观看效果。

接着对该命令进行子汇总,右键单击该命令,选择“属性”页的“汇总”选项页,将Num(器材数量)、Cost(器材成本)设置为子汇总字段,分别命名为“合计1”、“合计2”,汇总名称为GrantTotal,该名称为总汇总所共用。在程序中显示报表前,必须对该名称对应的记录集RsGrantTotal进行刷新,否则数据报表不能反映统计中间表的最新内容。单击“应用”按钮观看效果。

最后对该命令进行总汇总,右键单击该命令,选择“属性”页的“汇总”选项页,将“合计1”、“合计2”设置为总汇总字段,分别命名为“总计1”、“总计2”,单击“应用”按钮观看效果。

按照上面的步骤,我们在当前连接CatvConn下建立了一个包含汇总的分组命令,接着建立一个数据报表设计器命名为RptCost,将该分组子命令拖到数据报表的“细节”段内,释放后,调节各个字段的大小和位置,其中,子汇总字段和总汇总字段还应该分别另建分组节,总汇总字段所处的节应位于最上层。

三、在程序中填充统计中间表,更新数据报表并显示

设计一个打印模块如下:

Public Sub Print_EquipMentCost(Byval Date1 as Date, Byval Date2 as Date)

'清空虚拟表

Dim SSQL as string

Dim Cmd As New ADODB.Command

SSql = "Delete From EquipmentCost"

Cmd.ActiveConnection = gConn

'数据库连接变量,读者可以建立自己的数据库连接变量

Cmd.CommandType = adCmdText

Cmd.CommandText = SSql

Cmd.Execute

'将统计明细添加到虚拟表中

ssql="Insert into EquipmentCost"&&" (Project,Name,Standard,Type,Num,Cost)"&&" select a.project as 'Project',b.name as 'Name',"&&"b.standard as 'Standard', b.type as 'Type',"&&"b.num as 'Num',b.num*b.price as 'Cost'"&&"from Outbill a left join OutbillDetail b on(a.outbill=b.outbill)"&&" where a.OutDate>=" && Date1 && " and a.OutDate<=" && Date2

Cmd.ActiveConnection = gConn

Cmd.CommandType = adCmdText

Cmd.CommandText = SSql

Cmd.Execute

'刷新数据报表,使其显示最新查询记录

Set RptCost.DataSource = EnvCatv

'数据环境名称

EnvCatv.rsGrandTotal.Requery 'rsGrantTotal 为分组子命令记录集名称

'显示数据报表

RptCost.Show

End Sub

本程序在VB6.0、MS-SQL Server下运行成功。

出库单表名为OutBill,结构如下:

字段名

字段含义

类型

长度

OutBill

出库单号

Varchar

10

OutDate

出库日期

SmallDate

LLMan

领料人

Varchar

12

DepartMent

部门

Varchar

12

Operator

经手人

VarChar

12

Project

对应工程

VarChar

50

出库单明细表名为OutBillDetail,结构如下:

字段名

字段含义

类型

长度

OutBill

出库单号

Varchar

10

EmName

器材名称

Varchar

12

EmStandard

器材规格

Varchar

12

EmType

器材型号

Varchar

12

Amount

数量

Int

Price

单价

smallmoney

成本统计中间表名为EquipMentCost,结构如下:

字段名

字段含义

类型

长度

Project

工程名称

Varchar

50

Name

器材名称

Varchar

12

Standard

器材规格

Varchar

12

Type

器材型号

Varchar

12

Num

器材用量

Int

Cost

器材成本

smallmoney

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有