利用UFO报表批处理制作合并报表.doc

上传人:scccc 文档编号:14032276 上传时间:2022-01-31 格式:DOC 页数:12 大小:72KB
返回 下载 相关 举报
利用UFO报表批处理制作合并报表.doc_第1页
第1页 / 共12页
利用UFO报表批处理制作合并报表.doc_第2页
第2页 / 共12页
利用UFO报表批处理制作合并报表.doc_第3页
第3页 / 共12页
亲,该文档总共12页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《利用UFO报表批处理制作合并报表.doc》由会员分享,可在线阅读,更多相关《利用UFO报表批处理制作合并报表.doc(12页珍藏版)》请在三一文库上搜索。

1、利用UFO报表批处理制作合并报表2008-1-281.报表路径:先把路径列出,大家稍微看一下。合并报表你的下载权限 0 低于此附件所需权限 1, 你无法查看此附件主要有三个内容你的下载权限 0 低于此附件所需权限 1, 你无法查看此附件合并报表编程过程说明:1.由于第一次编合并报表,所以很多东西不知道,那么就查资料,主要参考三个资料,一个是UFO 的二次开发帮助文件,第二个是孙勇写的 UFO 报表高级应用培训讲义,第三个是用友报 表的 PDF 帮助2.客户的要求:客户要求将 12张资产负债表 (当然还有很多其他的表) 做合并,这 12张分别是不同的下属单位, 由于在开始实施的时候, 就考虑到合

2、并报表的事情, 所以但是在建立帐套的时候, 要求所有单位 的会计科目(包括辅助核算),报表格式都必须一致,所以这 12 张表的格式都是一模一样的。开始动手了现在第一步是建立一张合并报表模板, 可以直接用现有的资产负债表模板, 然后把公式清空, 报 表文件为“ 合并报表 资产负债表 .rep”2.报表归类:我们假设合并两张报表就可以了, zt003 和 zt013 ,路径如下:合并报表合并报表资产负债表 .rep合并报表资产负债表 .rep简单的合并方式:将zt013 的资产负债表的对应的单元格与ZT003 对应的单元格相加。批处理放在以下文件夹:合并报表 批处理 2008我们先简单建立一个批处

3、理,用以实现两个单元格的简单合并,文件命名为“ zt003zcfzb.shl ” 批命令如下:LET 合并报表 资产负债表 .rep-C7 RELA 年 WITH 合并报表 zt00 资产负债表 .rep - 年 ,月 WITH 合并报表 资产负债表 .rep - 月起码知道以上的命令可以实现将 C7 单元格的数据加上 “ 合并报表 资产负债表 .rep” C7 的数据。但是如果这样做的话,每一个单元格就要一条语句,而且如果有多张表的话,就更加复杂, 而且如果到时候要修改的话, 比如到了 2009 年的话, 每一条都要改一下, 甚至如果单元格发生变化, 要改的话,那不是要疯掉!所以在想能不能通

4、过变量来实现,便于后续修改。 经过翻查资料,大概知道了变量的应用,然后就来实现吧。 第一步,把报表路径变量化,可以直接设定一个变量&rep ,然后赋值,语句如下:let 合并报表 资产负债表 .rep那么单元格的赋值就可以这样来写:LET C7=C7+&rep-C7 RELA 年 WITH &rep- 年 ,月 WITH &rep- 月 这样写可以减少修改报表路径的问题,至少改个路径变量值,其他就不用改了,相对来说 比较方便一些,但是,问题是单元格也是比较麻烦,一条一来,有没有什么其他办法呢? 睡觉的时候突然想到能否用循环来处理,如果可以就好办多了,于是就开始实施,用 whil e 循环,但是

5、问题是如何来表示列号和行号呢?经过翻查资料,有一个意外的发现:你的下载权限 0 低于此附件所需权限 1, 你无法查看此附件有了这个意外的发现之后, 我就想, 干脆把路径、 列号、 行号都用变量表示算了, 看看情况如何, 代码如下:/设置报表路径、合并起始列、起始行let 合并报表 let &rep2=zt003let &rep3=2008let 资产负债表 .replet &col0=3let &row0=7/设置报表路径let &rep=&rep1+&rep2+&rep3+&rep4/设置列号let &col=&col0/设置行号 let &row=&row0/通过循环合并数据,合并C7 5

6、5的单元格while &col=4while &row!&col#&rowrela 年 with &rep- 年,月 with &rep- 月let &row=&row+1endlet &row=&row0let &co匸&col+1end做了以上变动之后,至少修改起来事比较简单,可以把这段代码保存为zt003zcfzb.shl ”通过以上的批处理命令,我们在执行此批命令的时候,就可以实现把一个表的C7 55的单元格与ZT003的对应的单元格相加。现在的情况有所变化,我们有两种需要合并的报表,比如合并报表资产负债表.rep合并报表资产负债表.rep最终合并到以下表:你的下载权限0低于此附件所需

7、权限1,你无法查看此附件如何实现呢?如何来利用之前做的批命令呢?难道需要把批命令重复写一遍吗?突然想到,能否通过调用批命令文件,相当于编程里面的“in elude ”,那问题就可以解决了,也就是说,将一个合并的批命令写成一个批命令文件,然后来调用,只要有需要合并的时候,就调用此批命令,问题就可以解决了,减少重复工作,同时容易修改。在批处理里面是有一个调用批命令的命令,就是用” DO命令。我们把之前做的“ zt003zcfzb.shl ”重新另存为“ zcfzb_hbbb.shl ”,路径如下: DO合并报表批命令 2008 zcfzb_hbbb.shl 然后我们建立一个“ zcfzb_main

8、.shl ”的批处理文件来调用。代码如下:/首先进入数据状态DATA/报表取数DO合并报表批命令 2008zcfzb_hbbb.shl 把此文件放在:合并报表00批命令01母公司2008 zcfzb_main.shl为了能够在进入报表的时候,将最终合并的报表的数据先清空,同样我们做一个清空的批 处理命令。清空数据,合并数据前先把数据清空。CLEAR C7 55CLEAR G7:H55把文件命名为“ 合并报表 批命令 2008zcfzb_clear.shl ”以备调用 然后我们对“ zcfzb_main.shl ”的批命令再次修改,加入清除数据的批处理。/首先进入数据状态DATA/清空数据DO

9、合并报表 批命令 2008zcfzb_clear.shl/报表取数DO 合并报表 批命令 2008zcfzb_hbbb.shl 那么以后不管有多少张表, 资产负债表, 损益表等等, 只要每一张表都保存相应的三个批处理 (主命令、清空命令、合并命令)。只是每张表需要修改的地方就是将“ zcfzb_hbbb.shl ”里面的参数做一些修改。比如路径、文件名称、年份,列名等等。用来调用呢?然后把变量的赋但是能否有更好的办法呢?能否将合并数据作为一个通用的模板, 值放在主程序中进行,这样不是更好吗?模型:合并报表 批命令 2008这个时候,我们开始做统一规划了: 主程序(主批处理): zcfzb_ma

10、in.shl 子程序(清空数据): zcfzb_clear.shl子程序(合并报表): zcfzb_hbbb.shl先把主程序列出:主程序(主批处理): zcfzb_main.shl/ 程序开始 /合并报表/合并报表说明:/zt003 广海本部/ 首先进入数据状态/-把变量清空,然后要求输入关键字。 DATA free allif 年 =0disp 请先输入关键字 returnelse/-设置批处理命令的路径。合并报表 00 批命令 let &shl02=01 母公司 let &shl03=2008let &shl04=&shl01+&shl02+&shl03let &shlclr=zcfzb

11、_clear.shllet &shlhb=zcfzb_hbbb.shllet &shlclr= &shl04+&shlclrlet &shlhb= &shl04+&shlhb清空数据 初始化取数报表 /DO &shlclr/合并报表 let &rep2=zt003/ 设置取数帐套let &rep3=2008资产负债表 .replet &col01=3/设置列起始值Clet &colmax01=4/ 设置列循环最大值 Dlet &col02=7/设置列起始值G let &colmax02=8/ 设置列循环最大值 H let &row01=7/设置行起始值7let &rowmax=55/ 设置行循

12、环最大值 55/ 报表取数 zt003let &rep2=zt003/ 设置取数帐套let &row0=&row01/设置行起始值/01. 分列取数 1let &col0=&col01/ 设置列起始值 C let &colmax=&colmax01 / 设置列循环最大值 D DO &shlhb/02. 分列取数 2let &col0=&col02/ 设置列起始值 Glet &colmax=&colmax02/ 设置列循环最大值 HDO &shlhb/END/保存报表/savefree allend/第一层IF的结尾清空命令:zcfzb_clear.shl清空数据CLEAR c7 55CLEAR

13、 g7:h5合并命令:zcfzb_hbbb.shl/ 合并报表/设置报表路径、合并起始列、起始行let & rep=&rep1+ &rep2+&rep3+&rep4let &co匸&colOlet &row=& row0通过循环合并数据while &col 年,月 with &rep- 月while &row!&col#&row rela let &row=& row+1 endlet &row=& row0/重新置位,否则行的循环无法进行 let &co匸&col+1end以后如果需要合并报表,其实要改的就是zcfzb_mai n.shl文件里面的两个段落,一个是路径设置”,一个是 报表取数

14、”。比如需要修改批命令的路径和批命令对应的文件名,则改以下蓝色部分。/-设置批处理命令的路径。let &shl0仁合并报表00批命令“let &shl02= 02 合并口径let &shl03= 2008let & shl04=&shl01+ &shl02+&shl03let &shlclr= zcfzb_clear.shllet &shlhb= zcfzb_hbbb.shllet &shlclr= &shl04+&shlclr let &shlhb= &shl04+&shlhb如果需要修改需要合并的报表,那么就改以下内容:/ 报表取数 zt003let &rep2= zt003 / 设置取数

15、帐套let &row0=&row01/设置行起始值/01. 分列取数 1let &col0=&col01/ 设置列起始值 Clet &colmax=&colmax01/ 设置列循环最大值 DDO &shlhb/02. 分列取数 2let &col0=&col02/ 设置列起始值 Glet &colmax=&colmax02/ 设置列循环最大值 HDO &shlhb/END如果需要合并的列和行需要修改,则改:/ 初始化取数报表 合并报表 let &rep2=zt003/ 设置取数帐套let &rep3=2008资产负债表 .replet &col01=3/设置列起始值Clet &colmax01

16、=4/ 设置列循环最大值 Dlet &col02=7/设置列起始值Glet &colmax02=8/ 设置列循环最大值 Hlet &row01=7/设置行起始值7let &rowmax=55添加以下代码,/ 设置行循环最大值 55 如果需要添加合并的报表, 比如添加 zt013 ,那么就在 zt003 的合并代码下,其实就是复制。/ 报表取数 zt013let &rep2= zt013 / 设置取数帐套let &row0=&row01/设置行起始值/01.分列取数 1let &col0=&col01/ 设置列起始值 C let &colmax=&colmax01 / 设置列循环最大值 D DO &shlhb let &col0=&col02/02.分列取数 2/ 设置列起始值 Glet &colmax=&colmax02/ 设置列循环最大值 HDO &shlhb/END

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1