请教怎样按季度汇总报表
各位高手:我编写的按季度汇总报表的程序中,是按照"表名+年度+季度"的方法来选定各季报表的,不知为什么,在表单中运行汇总程序后,再重新选定季度值后,出来的还是原来第一次汇总出来的那个季度的值,不能更换季度,我修改多次,依然如旧,绞尽脑汁又搜索枯肠,奈何肚里无货,依然百思不得其解,现将主要程序抄写如下,请高手指点迷津,不胜感谢!
程序是在表单用于季度选择和汇总的Combol中的Click过程中:
thisform.grid1.readonly=.t.
din=alltrim(this.value)
s=nf+'年工业分类取水汇总 __'+din
thisform.caption=s
jd1=iif(din='一季度','1',iif(din='二季度','2',iif(din='三季度','3','4')))
IF jd1>jd
messagebox('别着急,您所选季度尚未到来,请重新选择!',48,'')
.F.
.F.
RETURN
endif
.t.
fl='fl'+nf+jd1
flh='flh'+nf+jd1
flhz='flhz'+nf+jd1
if not file('&fl..dbf')
messagebox('分类数据尚未输入!',48,'')
.F.
return
endif
shen5='shen5'+nf+jd1
use shen5k
copy to &shen5
use &shen5 alias sb5 &&以别名打开省表五
select 0
fl='fl'+nf+jd1
use &fl alias fls &&以别名打开分类表
index on cod tag cod &&为当前数据库按索引关键字表达式cod建立一个复合索引文件
set order to tag cod &&将打开的索引文件设置为主索引文件,汇总分类表数据到 flhz 中
SELECT cod,count(cod) as hu,sum(value)as cz,sum(coolt+coolg+cools)as co,sum(gyt+gyg+gys)as gl,sum(bot+bog+bos)as gy,sum(cjt+cjg+cjs+dormt+dormg+dorms+infrt+infrg+infrs+elset+elseg+eslo)as el,sum(sumt)as zl,sum(sumg)as dx,sum(sums)as db,sum(resum)as cf;
FROM assf GROUP BY cod into cursor flhz
copy to &flhz
index on cod tag cod &&按分类号cod 对flhz库建立结构化复合索引文件中的索引标记 cod
copy to &flh &&("当前表是:flhz
USE &&关闭flhz:
select 0 &&选择编号最小的未被使用的工作区为当前工作区
use &flh alias ff &&以别名ff打开工作表.当前表是ff
select 0 &&选择编号最小的未被使用的工作区为当前工作区
SELECT sb5
update on cod from ff; &&以别名库(汇总表)中的内容更新当前库
replace hu with ff.hu,zl with ff.zl,dx with ff.dx,db with ff.db,co with ff.co;
gy with ff.gy,gl with ff.gl,el with ff.el,cz with ff.cz,cf with ff.cf
replace all ben with zl+dx+db
if jd1='1'
replace all ad with ben,adf with cf,adc with cz &&如为一季度,累计值等于本季值
sh500='shen5'+ str(val(nf+jd1)-10,5) &&去年同期的工作表
select 0
use &sh500 alias sb510 &&打开去年同期的工作表
select sb5
set relation to recno() into sb510 && 和去年同期的表建立关联
** &&计算去年同期的工业取水、万元工业产值取水和工业用水重复利用率
replace all qt with sb510.ad,qv with sb510.adv,qfl with sb510.cfl
go top
scan for cz<>0 &&按条件扫描每条记录,替换原有记录,(如果工业产值cz不等于0)
replace uv with ben/cz &&计算万元工业产值取水量
loop
endscan
go top
scan for adc<>0 &&按条件扫描每条记录,替换原有记录
replace adv with ad/adc &&计算累计万元工业产值取水量
loop
endscan
go top
scan for ad<>0 &&按条件扫描每条记录(如果工业累计取水ad不等于0)
replace cfl with adf/(adf+ad)*100 &&计算重复利用率
loop
endscan
else
sh50='shen5'+ str(val(nf+jd1)-1,5) &&上个季度的工作表
sh500='shen5'+ str(val(nf+jd1)-10,5) &&去年同期的工作表
select 0
use &sh500 alias sb510 &&打开去年同期的工作
select 0
use &sh50 alias sb51 &&打开上个季度的工作表
select c
select sb5
set relation to recno() into sb51 &&和上季度表建立关联
set relation to recno() into sb510 addi && 和去年同期的表建立关联
replace all qt with sb510.ad,qv with sb510.adv,qfl with sb510.cfl&&计算各项去年同期值
replace all ad with sb51.ad+ben,adf with sb51.adf+cf,adc with sb51.adc+cz && 将上月累计值和本季值相加,计算各项累计值
go top
scan for cz<>0 &&按条件扫描每条记录,替换原有记录
replace uv with ben/cz &&计算万元工业产值取水量
loop
endscan
go top
scan for adc<>0 &&按条件扫描每条记录,替换原有记录
replace adv with ad/adc &&计算累计万元工业产值取水量
loop
endscan
go top
scan for ad<>0 &&按条件扫描每条记录
replace cfl with adf/(adf+ad)*100 &&计算重复利用率
loop
endscan
endif
ffile=shen5
use &shen5
copy to shen5
use
if jd1='1'
select ff
use
select sb510
use
SELECT fls
use
select assf
use
else
select ff
use
select sb510
use
select sb51
use
SELECT fls
use
select assf
use
endif
thisform.grid1.recordsourcetype=0&&自动打开RecordSource属性设置中规定的表
thisform.grid1.recordsource="shen5" &&赋数据源
messagebox(jd1+'季度省表五已汇总!',64,'')
this.Visible=.f.
use