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

duoerlove520

duoerlove520

2016-02-19 12:53

下面请跟着图老师小编一起来了解下在VB6.0中实现动态统计报表,精心挑选的内容希望大家喜欢,不要忘记点个赞哦!
在利用VB开发MIS系统的过程中,经常需要制作动态统计报表。本文就如何实现动态数据源下的分组交叉统计报表进行阐述,并结合实例给出编程指导。
  
  在VB6.0的数据环境设计器中,我们可以利用“添加命令”一项来连接报表所需的数据源,同时利用“添加命令”属性中的分组与合计功能设计分组交叉统计报表的数据源,至此我们可以设计简单的数据存在于单一表静态数据源下分组交叉报表,对于数据存在多表的复杂的动态数据源下的分组交叉报表来说,仍实现不了,实现该功能的关键在于构造一个符合动态数据源要求的中间表。下面以一管理系统中工程成本统计报表的实例来说明如何实现动态数据源下的分组交叉统计报表。
  
  一、报表要求与分析
  该报表要求列出在指定的时间段内实施的各项工程所耗器材明细、数量、费用,并且计算各项工程的成本,最终计算所有工程的累计成本。
  
  需求分析后可知该报表是个典型的动态数据源下分组统计报表,分组项为工程名称,要求对每个分组进行子汇总和对所有分组进行总汇总。由于在该系统中的出库单和出库单明细分别存放在不同的表中,因此必须根据报表的要求预先构造一个成本统计中间表,命名为EquipMentCost。相关表结构如图1。
  
  通过对表OutBill和OutBillDetail的分析,发现两者通过关键字OutBill相联,下面通过SQL语句生成中间表EquipmentCost,语句如下:
  
  InsertintoEquipmentCost
  
  (Project,Name,Standard,Type,Num,Cost)
  
  selecta.projectas'Project',b.nameas'Name',b.standardas'Standard',b.typeas'Type',b.numas'Num',b.numb.priceas'Cost'fromOutbillaleftjoinOutbillDetailbon(a.outbill=b.outbill)
  
  wherea.OutDate=date1anda.OutDate=date2
  
  date1和date2变量用来指定时间,注意插入前要先清空该中间表的所有数据。
  
  二、利用数据环境设计器生成工程成本报表的初始模板
  打开一个数据环境设计器,在其属性表单中设置其名称属性为EnvCatv,并添加一个数据库连接到当前库Catv,连接名称为CatvConn。在当前库连接下单击右键,选择“添加命令”选项,创建一个命令,命名为CmdCost,在该命令的属性页的“通用”选项页上设置SQL语句如下:
  
  SelectfromEquipmentCost
  
  单击“应用”按钮察看效果。
  
  随后对该命令进行分组,右键单击该命令,选择“属性”选项,在属性页的“分组”选项页中,将Project(工程名称)字段设置为分组字段,分组名称为GroupCost,单击“应用”按钮观看效果。
  
  接着对该命令进行子汇总,右键单击该命令,选择“属性”页的“汇总”选项页,将Num(器材数量)、Cost(器材成本)设置为子汇总字段,分别命名为“合计1”、“合计2”,汇总名称为GrantTotal,该名称为总汇总所共用。在程序中显示报表前,必须对该名称对应的记录集RsGrantTotal进行刷新,否则数据报表不能反映统计中间表的最新内容。单击“应用”按钮观看效果。
  
  最后对该命令进行总汇总,右键单击该命令,选择“属性”页的“汇总”选项页,将“合计1”、“合计2”设置为总汇总字段,分别命名为“总计1”、“总计2”,单击“应用”按钮观看效果。
  
  按照上面的步骤,我们在当前连接CatvConn下建立了一个包含汇总的分组命令,接着建立一个数据报表设计器命名为RptCost,将该分组子命令拖到数据报表的“细节”段内,释放后,调节各个字段的大小和位置,其中,子汇总字段和总汇总字段还应该分别另建分组节,总汇总字段所处的节应位于最上层。
  
  三、在程序中填充统计中间表,更新数据报表并显示
  设计一个打印模块如下:
  
  PublicSubPrint_EquipMentCost(ByvalDate1asDate,ByvalDate2asDate)
  
  '清空虚拟表
  
  DimSSQLasstring  
  
  DimCmdAsNewADODB.Command
  
  SSql="DeleteFromEquipmentCost"
  
  Cmd.ActiveConnection=gConn  
  
  '数据库连接变量,读者可以建立自己的数据库连接变量
  
  Cmd.CommandType=adCmdText
  
  Cmd.CommandText=SSql
  
  Cmd.Execute
  
  '将统计明细添加到虚拟表中
  
  ssql="InsertintoEquipmentCost"&&"(Project,Name,Standard,Type,Num,Cost)"&&"selecta.projectas'Project',b.nameas'Name',"&&"b.standardas'Standard',b.typeas'Type',"&&"b.numas'Num',b.num*b.priceas'Cost'"&&"fromOutbillaleftjoinOutbillDetailbon(a.outbill=b.outbill)"&&"wherea.OutDate="&&Date1&&"anda.OutDate="&&Date2
  
  Cmd.ActiveConnection=gConn
  
  Cmd.CommandType=adCmdText
  
  Cmd.CommandText=SSql
  
  Cmd.Execute
  
  '刷新数据报表,使其显示最新查询记录
  
  SetRptCost.DataSource=EnvCatv
  
  '数据环境名称
  
  EnvCatv.rsGrandTotal.Requery  'rsGrantTotal为分组子命令记录集名称
  
  '显示数据报表
  
  RptCost.Show
  
  EndSub
  
  本程序在VB6.0、MS-SQLServer下运行成功。
  
  出库单表名为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

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/bianchengyuyan/)->

展开更多 50%)
分享

猜你喜欢

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

编程语言 网络编程
在VB6.0中实现动态统计报表

VB6.0动态加载ActiveX控件漫谈

编程语言 网络编程
VB6.0动态加载ActiveX控件漫谈

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

如何使用vb6.0来实现中文实名搜索

电脑网络
如何使用vb6.0来实现中文实名搜索

用VB6.0快速实现图象加柔效果

vb
用VB6.0快速实现图象加柔效果

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

在VB中实现窗体的动态效果

编程语言 网络编程
在VB中实现窗体的动态效果

VB6中动态设置报表结果

编程语言 网络编程
VB6中动态设置报表结果

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

网页里控制图片大小的相关代码

网页里控制图片大小的相关代码

创建不规则窗口

创建不规则窗口
下拉加载更多内容 ↓