CLEAR G7:H55
把文件命名为“D:\\合并报表\\批命令\\2008\\zcfzb_clear.shl”以备调用
然后我们对“zcfzb_main.shl”的批命令再次修改,加入清除数据的批处理。 //首先进入数据状态 DATA //清空数据
DO \合并报表\\批命令\\2008\\zcfzb_clear.shl\ //报表取数
DO \合并报表\\批命令\\2008\\zcfzb_hbbb.shl \
那么以后不管有多少张表,资产负债表,损益表等等,只要每一张表都保存相应的三个批处理(主命令、清空命令、合并命令)。只是每张表需要修改的地方就是将“zcfzb_hbbb.shl”里面的参数做一些修改。比如路径、文件名称、年份,列名等等。
但是能否有更好的办法呢?能否将合并数据作为一个通用的模板,用来调用呢?然后把变量的赋值放在主程序中进行,这样不是更好吗? 模型:
这个时候,我们开始做统一规划了:D:\\合并报表\\批命令\\2008\\ 主程序(主批处理):zcfzb_main.shl 子程序(清空数据):zcfzb_clear.shl 子程序(合并报表):zcfzb_hbbb.shl
先把主程序列出:
主程序(主批处理):zcfzb_main.shl
//----------------------------------------------------程序开始---------------------------------------- //合并报表 //合并报表说明: //zt003广海本部
//----------------------------------------------------首先进入数据状态-------------------------------- //--把变量清空,然后要求输入关键字。 DATA free all
if 年=0
disp \请先输入关键字\return else
//--设置批处理命令的路径。 let &shl01=\合并报表\\00批命令\let &shl02=\母公司\let &shl03=\
let &shl04=&shl01+&shl02+&shl03 let &shlclr=\let &shlhb=\
let &shlclr= &shl04+&shlclr let &shlhb= &shl04+&shlhb
//----------------------------------------------------清空数据---------------------------------------------------- DO &shlclr
//----------------------------------------------------初始化取数报表-------------------------------------------- let &rep1=\合并报表\let &rep2=\
// 设置取数帐套 let &rep3=\
let &rep4=\资产负债表.rep\let &col01=3
//设置列起始值 C
let &colmax01=4
//设置列循环最大值D
let &col02=7
//设置列起始值 G
let &colmax02=8
//设置列循环最大值H
let &row01=7
//设置行起始值 7
let &rowmax=55
//设置行循环最大值55
//-----------------------------------------------------报表取数----zt003 let &rep2=\
// 设置取数帐套 let &row0=&row01
//设置行起始值
//----------------------------------------------------01.分列取数1 let &col0=&col01
//设置列起始值 C let &colmax=&colmax01 //设置列循环最大值 D DO &shlhb
//----------------------------------------------------02.分列取数2 let &col0=&col02
//设置列起始值 G let &colmax=&colmax02 //设置列循环最大值H DO &shlhb
//----------------------------------------------------END------------------------------------------
//---------------------------------------------------保存报表------------------------------------------
//save free all end
//第一层IF的结尾 清空命令:zcfzb_clear.shl //清空数据 CLEAR c7
55
CLEAR g7:h5
合并命令:zcfzb_hbbb.shl
//------------------------合并报表--------------------------------------------- //设置报表路径、合并起始列、起始行 let &rep=&rep1+&rep2+&rep3+&rep4 let &col=&col0 let &row=&row0
//通过循环合并数据 while &col<=&colmax
while &row<=&rowmax
let !&col#&row=!&col#&row+&rep->!&col#&row rela 年 with &rep->年,月 with &rep->月
let &row=&row+1 end
let &row=&row0
//重新置位,否则行的循环无法进行
let &col=&col+1 end
以后如果需要合并报表,其实要改的就是zcfzb_main.shl文件里面的两个段落,一个是“路径设置”,一个是“报表取数”。
比如需要修改批命令的路径和批命令对应的文件名,则改以下蓝色部分。 //--设置批处理命令的路径。 let &shl01=\D:\\合并报表\\00批命令\let &shl02=\\\02合并口径\let &shl03=\\\2008\
let &shl04=&shl01+&shl02+&shl03 let &shlclr=\\\zcfzb_clear.shl\
let &shlhb=\\\zcfzb_hbbb.shl\
let &shlclr= &shl04+&shlclr let &shlhb= &shl04+&shlhb
如果需要修改需要合并的报表,那么就改以下内容: //-----------------------------------------------------报表取数----zt003 let &rep2=\\\zt003\
// 设置取数帐套 let &row0=&row01
//设置行起始值
//----------------------------------------------------01.分列取数1 let &col0=&col01
//设置列起始值 C let &colmax=&colmax01 //设置列循环最大值 D DO &shlhb
//----------------------------------------------------02.分列取数2 let &col0=&col02
//设置列起始值 G let &colmax=&colmax02 //设置列循环最大值H DO &shlhb
//----------------------------------------------------END------------------------------------------
如果需要合并的列和行需要修改,则改:
//----------------------------------------------------初始化取数报表-------------------------------------------- let &rep1=\合并报表\let &rep2=\
// 设置取数帐套 let &rep3=\
let &rep4=\资产负债表.rep\let &col01=3