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

上传人:b****4 文档编号:4696606 上传时间:2023-05-07 格式:DOCX 页数:14 大小:18.89KB
下载 相关 举报
利用UFO报表批处理来制作合并报表.docx_第1页
第1页 / 共14页
利用UFO报表批处理来制作合并报表.docx_第2页
第2页 / 共14页
利用UFO报表批处理来制作合并报表.docx_第3页
第3页 / 共14页
利用UFO报表批处理来制作合并报表.docx_第4页
第4页 / 共14页
利用UFO报表批处理来制作合并报表.docx_第5页
第5页 / 共14页
利用UFO报表批处理来制作合并报表.docx_第6页
第6页 / 共14页
利用UFO报表批处理来制作合并报表.docx_第7页
第7页 / 共14页
利用UFO报表批处理来制作合并报表.docx_第8页
第8页 / 共14页
利用UFO报表批处理来制作合并报表.docx_第9页
第9页 / 共14页
利用UFO报表批处理来制作合并报表.docx_第10页
第10页 / 共14页
利用UFO报表批处理来制作合并报表.docx_第11页
第11页 / 共14页
利用UFO报表批处理来制作合并报表.docx_第12页
第12页 / 共14页
利用UFO报表批处理来制作合并报表.docx_第13页
第13页 / 共14页
利用UFO报表批处理来制作合并报表.docx_第14页
第14页 / 共14页
亲,该文档总共14页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

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

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

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

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

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

合并报表编程过程说明:

1.

由于第一次编合并报表,所以很多东西不知道,那么就查资料,主要参考三个资料,一个是UFO的二次开发帮助文件,第二个是孙勇写的《UFO报表高级应用培训讲义》,第三个是用友报表的PDF帮助

2.

客户的要求:

客户要求将12张资产负债表(当然还有很多其他的表)做合并,这12张分别是不同的下属单位,由于在开始实施的时候,就考虑到合并报表的事情,所以但是在建立帐套的时候,要求所有单位的会计科目(包括辅助核算),报表格式都必须一致,所以这12张表的格式都是一模一样的。

开始动手了

1.

现在第一步是建立一张合并报表模板,可以直接用现有的资产负债表模板,然后把公式清空,报表文件为“D:

\合并报表\zt003\2008\资产负债表.rep”

2.

报表归类:

我们假设合并两张报表就可以了,zt003和zt013,路径如下:

D:

\合并报表

D:

\合并报表\zt003\2008\资产负债表.rep

D:

\合并报表\zt013\2008\资产负债表.rep

简单的合并方式:

将zt013的资产负债表的对应的单元格与ZT003对应的单元格相加。

批处理放在以下文件夹:

D:

\合并报表\批处理\2008

我们先简单建立一个批处理,用以实现两个单元格的简单合并,文件命名为“zt003zcfzb.shl”

批命令如下:

LETC7=C7+"D:

\合并报表\zt003\2008\资产负债表.rep"->C7RELA年WITH"D:

\合并报表\zt003\2008\资产负债表.rep"->年,月WITH"D:

\合并报表\zt003\2008\资产负债表.rep"->月

起码知道以上的命令可以实现将C7单元格的数据加上“D:

\合并报表\zt003\2008\资产负债表.rep”C7的数据。

但是如果这样做的话,每一个单元格就要一条语句,而且如果有多张表的话,就更加复杂,而且如果到时候要修改的话,比如到了2009年的话,每一条都要改一下,甚至如果单元格发生变化,要改的话,那不是要疯掉!

所以在想能不能通过变量来实现,便于后续修改。

经过翻查资料,大概知道了变量的应用,然后就来实现吧。

第一步,把报表路径变量化,可以直接设定一个变量&rep,然后赋值,语句如下:

let&rep="D:

\合并报表\zt003\2008\资产负债表.rep"

那么单元格的赋值就可以这样来写:

LETC7=C7+&rep->C7RELA年WITH&rep->年,月WITH&rep->月

这样写可以减少修改报表路径的问题,至少改个路径变量值,其他就不用改了,相对来说比较方便一些,但是,问题是单元格也是比较麻烦,一条一来,有没有什么其他办法呢?

睡觉的时候突然想到能否用循环来处理,如果可以就好办多了,于是就开始实施,用while循环,但是问题是如何来表示列号和行号呢?

经过翻查资料,有一个意外的发现:

你的下载权限0低于此附件所需权限1,你无法查看此附件

有了这个意外的发现之后,我就想,干脆把路径、列号、行号都用变量表示算了,看看情况如何,代码如下:

//设置报表路径、合并起始列、起始行

let&rep1="D:

\合并报表"

let&rep2="\zt003"

let&rep3="\2008"

let&rep4="\资产负债表.rep"

let&col0=3

let&row0=7

//设置报表路径

let&rep=&rep1+&rep2+&rep3+&rep4

//设置列号

let&col=&col0

//设置行号

let&row=&row0

//通过循环合并数据,合并C7

55的单元格

while&col<=4

while&row<=55

let!

&col#&row=!

&col#&row+&rep->!

&col#&rowrela年with&rep->年,月with&rep->月

let&row=&row+1

end

let&row=&row0

let&col=&col+1

end

做了以上变动之后,至少修改起来事比较简单,可以把这段代码保存为“zt003zcfzb.shl”

通过以上的批处理命令,我们在执行此批命令的时候,就可以实现把一个表的C7

55的单元格与ZT003的对应的单元格相加。

现在的情况有所变化,我们有两种需要合并的报表,比如

D:

\合并报表\zt003\2008\资产负债表.rep

D:

\合并报表\zt013\2008\资产负债表.rep

最终合并到以下表:

D:

\合并报表\01母公司\2008\资产负债表.rep

你的下载权限0低于此附件所需权限1,你无法查看此附件

如何实现呢?

如何来利用之前做的批命令呢?

难道需要把批命令重复写一遍吗?

突然想到,能否通过调用批命令文件,相当于编程里面的“include”,那问题就可以解决了,也就是说,将一个合并的批命令写成一个批命令文件,然后来调用,只要有需要合并的时候,就调用此批命令,问题就可以解决了,减少重复工作,同时容易修改。

在批处理里面是有一个调用批命令的命令,就是用”DO”命令。

我们把之前做的“zt003zcfzb.shl”重新另存为“zcfzb_hbbb.shl”,路径如下:

DO"D:

\合并报表\批命令\2008\zcfzb_hbbb.shl"

然后我们建立一个“zcfzb_main.shl”的批处理文件来调用。

代码如下:

//首先进入数据状态

DATA

//报表取数

DO"D:

\合并报表\批命令\2008\zcfzb_hbbb.shl"

把此文件放在:

D:

\合并报表\00批命令\01母公司\2008\zcfzb_main.shl

为了能够在进入报表的时候,将最终合并的报表的数据先清空,同样我们做一个清空的批处理命令。

//清空数据,合并数据前先把数据清空。

CLEARC7

55

CLEARG7:

H55

把文件命名为“D:

\合并报表\批命令\2008\zcfzb_clear.shl”以备调用

然后我们对“zcfzb_main.shl”的批命令再次修改,加入清除数据的批处理。

//首先进入数据状态

DATA

//清空数据

DO"D:

\合并报表\批命令\2008\zcfzb_clear.shl"

//报表取数

DO"D:

\合并报表\批命令\2008\zcfzb_hbbb.shl"

那么以后不管有多少张表,资产负债表,损益表等等,只要每一张表都保存相应的三个批处理(主命令、清空命令、合并命令)。

只是每张表需要修改的地方就是将“zcfzb_hbbb.shl”里面的参数做一些修改。

比如路径、文件名称、年份,列名等等。

但是能否有更好的办法呢?

能否将合并数据作为一个通用的模板,用来调用呢?

然后把变量的赋值放在主程序中进行,这样不是更好吗?

模型:

这个时候,我们开始做统一规划了:

D:

\合并报表\批命令\2008\

主程序(主批处理):

zcfzb_main.shl

子程序(清空数据):

zcfzb_clear.shl

子程序(合并报表):

zcfzb_hbbb.shl

先把主程序列出:

主程序(主批处理):

zcfzb_main.shl

//----------------------------------------------------程序开始----------------------------------------

//合并报表

//合并报表说明:

//zt003广海本部

//----------------------------------------------------首先进入数据状态--------------------------------

//--把变量清空,然后要求输入关键字。

DATA

freeall

if年=0

disp"请先输入关键字"

return

else

//--设置批处理命令的路径。

let&shl01="D:

\合并报表\00批命令"

let&shl02="\01母公司"

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

//----------------------------------------------------清空数据----------------------------------------------------

DO&shlclr

//----------------------------------------------------初始化取数报表--------------------------------------------

let&rep1="D:

\合并报表"

let&rep2="\zt003"

//设置取数帐套

let&rep3="\2008"

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="\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------------------------------------------

//---------------------------------------------------保存报表------------------------------------------

//save

freeall

end

//第一层IF的结尾

清空命令:

zcfzb_clear.shl

//清空数据

CLEARc7

55

CLEARg7:

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#&rowrela年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="D:

\合并报表"

let&rep2="\zt003"

//设置取数帐套

let&rep3="\2008"

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

如果需要添加合并的报表,比如添加zt013,那么就在zt003的合并代码下,添加以下代码,其实就是复制。

//-----------------------------------------------------报表取数----zt013

let&rep2="\zt013"

//设置取数帐套

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------------------------------------------

现在批命令也做出来了,我后来由做了一个自定义菜单,设定点击菜单命令,打开报表,然后在点击菜单的批处理命令,执行zcfzb_main.shl命令就可以了。

最后完成了,希望能够给大家一点点的启发。

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

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2