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

2016-02-19 12:53 6 1 收藏

下面请跟着图老师小编一起来了解下在VB6.0中实现动态统计报表,精心挑选的内容希望大家喜欢,不要忘记点个赞哦!

【 tulaoshi.com - 编程语言 】

在利用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://www.tulaoshi.com/bianchengyuyan/)->

来源:http://www.tulaoshi.com/n/20160219/1602342.html

延伸阅读
第一步,绘制对象:用函数drawcar()画赛车,drawway(n)画跑道的第n层。 第二步,接受控制:Form的KeyPreview属性要设为true,在Form_KeyPress函数中通过改变全局变量cx来控制赛车的位置。 第三步,游戏循环:作为即时游戏,必须要有一个Timer,并在其事件Timer1_Timer()中绘制所有对象和进行碰撞检测。本例中,绘图部分写在了Timer1_Ti...
标签: vb
TreeView是最灵活的Windows控件之一,它以分层的形式显示数据,允许用户随意扩展或折叠节点。鉴于实际生活中许多事物有着层次关系,如计算机里的文件夹、人事组织关系、地区从属关系等,TreeView的应用也极其广泛。但在实际开发中,许多人不喜欢使用TreeView,主要是由于默认的TreeView是“只读”的,不支持添加、删除、编辑、调整节点位...
同步(Synchronization)是数据库在网络环境中应用所要涉及到的一个重要概念。其基本过程大致分以下几个步骤:首先把一个数据库设为可复制副本属性,使其成为设计正本(VB中称设计原版,ACCESS中称设计母版);然后根据应用程序的实现需要从设计正本复制出多个副本(VB中称复本),这些副本组成一个副本集合(设计正本也被看做是第一个的、初始...
不少网友问及如何在VB中建立和使用文本资源文件。我想这也是很多VB初学者迫切想掌握的技巧。为此,将回答网友的信件整理了一下,形成此文,希望对大家有些帮助。 一.文本资源文件的建立 第一步:启动资源编辑器 如果VB资源编辑器没有被加载,请单击"外接程序",选取"外接管理器"启动外接管理器,然后选中"VB6资源编...
在VB中如何使用直观、简便的报表一直是很多人关心的问题,CrystalReports用起来又不太理想。现介绍一在VB中运行MicrosoftAccess报表的方法,用起来还不错。 利用Automation运行MicrosoftAccess报表 1.使用MicrosoftAccess建立数据库(如:novelty.mdb)的相关报表(如:rptEmployess)。 2.创建引用 在VB中使用...

经验教程

559

收藏

88
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部