|
我是一名财务主管,去年底,领导要求将酒店用友报表与集团FMIS整合,由于酒店财务一直作两套帐,一套是用友财务系统,相对来说是比较好成熟的系统,特别是其UFO报表,是酒店行业较好的模板,但由于后来集团要求上FIMS财务系统,这套系统涉及行业面广,集团下属各行业在一平台集中财务管理,酒店财务一方面在用友系统记帐,然后UFO报表取数,以便内部月度各部门财务分析;另一方面在FIMS财务系统里记帐,以便集团集中管理,工作重复,浪费人力资源,两套系统并行运行了几年,各自都已成熟,所以,这次领导希望通过整合,放弃用友记帐,UFO报表能不能直接从FMIS财务系统里取数,这样避免工作重复,提高工作效率。
通过前期可行性分析,发现UFO报表数据是取之用友总帐模块里的GL_accsum和GL_accass两张表数据,再对应发现可以从FIMS系统里科目余额表、部门二维余表(服务成本、销售费用、管理费用、税金及附加)、 多项辅助表里提取相关数据,UFO报表是可以脱离用友系统,并从FMIS中取数的。
前期准备:制定整合计划,分几个阶段:
第一阶段:设计工作流程,财务搭建一个数据库,酒店后台财务将FMIS系统里相关成本、费用、税金数据上传到数据库里,酒店前台收入审计将各营业点收入按分项上传到数据库里,然后后台财务再通过自定义取数函数从数据库里取数到Excel办公软件里进行数据分析,产生报表。
第二阶段:构造财务报表新的平台,前端是采用Excel办公软件,其特点是方便用户各点报表的操作,包括工作表格式、编辑、打印等功能都很受用户喜爱,另外其内制的VBA功能也很强大,后端数据库采用sql2000,后端数据库与前端用户采用VB6.0编程DLL动态链接库接口。(很惭愧,现在都奔sql2005和VB.NET,我已落伍啦!)
第三阶段:构建后端sql2000数据库中表结结构及关系,将用友总帐中GL_accsum和GL_accass两张表数据导入sql2000相应表中,通过sql存储过程和触发器进一步将数据库性能优化,利用sql数据库自身的自定义函数定义了几个台帐、科目、预算及其他信息取数函数,有助于前端用户取数速度。
第三阶段:搭建数据上传通道,由于对Excel与sql之间搭建还是不太熟练,目前只能通过VB6.0编写上传代码,设置用户登录窗口、相关操作权限,数据库链接代码(为了这数据库链接,我吃了不少苦,刚开始我将sql2000搭建、vb编程和Excel都放在一台电脑上开发的,所以链接我是直接以dim cnn as new adodb.connection 开头的,等到放到其他局域网内测试时怎么也链接不上,后来查了不少资料,原来应该是dim cnn as object 然后 set cnn =createobject("adodb.connection)开头的),然后设置类模块,最后编译成DLL接口放入前端用户Excel里,本来Excel自身的VBA也可以编程链接数据库,但不安全,我在VB6.0编程中也采取一些优化,比如调用sql存储过程、调用VBA模块、利用API函数优化等。
第四阶段:搭建用户端Excel办公平台,酒店前台收入审计自身有一套Excel报表,在其VBA里加入DLL接口,用户登录并对应权限上传收入数据,酒店后台财务将UFO报表转换成Excel格式,在其VBA里也加入DLL接口,用户登录并对应权限上传成本、费用、税金及科目数,另外,在VBA里也建了几个取数函数,函数的内容首先调取DLL数据库链接接口,然后直接调取服务器上SQL自定义函数,这样即安全链接,又加快取数速度,最后通过Excel自身所带的定义名称、单元格函数、VBA对Exce进一步优化。
以上只是我个人在使用excel与sql过程中一些心得,希望和大家共同交流经验!
|
|