时间: 2021-07-31 作者:daque
在运用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 10outdate 出库日子 smalldate llman 领料人 varchar 12department 部分 varchar 12operator 经手人 varchar 12project 对应工程 varchar 50出库单明细表名为outbilldetail,构造如次: 字段名 字段含意 典型 长度outbill 出库单号 varchar 10emname 东西称呼 varchar 12emstandard 东西规格 varchar 12emtype 东西型号 varchar 12amount 数目 int price 单价 smallmoney 本钱统计中央表名为equipmentcost,构造如次: 字段名 字段含意 典型 长度project 工程称呼 varchar 50name 东西称呼 varchar 12standard 东西规格 varchar 12type 东西型号 varchar 12num 东西用量 int cost 东西本钱 smallmoney