财经纵横新浪首页 > 财经纵横 > 国内财经 > 正文
 

“总会计2000”数据库数据采集转换分析


http://finance.sina.com.cn 2005年06月16日 14:50 审计署网站

  来源: 重庆市审计局

  编者按:随着计算机辅助审计技术的广泛运用,财务数据的采集转换是困扰审计人员的一个难题。为此,重庆市审计局选编了关于“总会计2000”和“中联财务软件”数据库数据转换的2篇文章,供广大审计工作者借鉴。

  “总会计2000”数据库数据采集转换分析

  2005年,“金审工程”应用系统之一“现场审计实施系统”(简称AO)在我市审计机关推广应用。在财政预算执行审计中,针对我市财政系统普遍使用“总会计2000”软件的情况,重庆市审计局有关人员对“总会计2000”的数据库数据进行了认真分析、研究,制作了该软件数据库数据导入模板,极大地方便了审计人员采集转换“总会计2000”数据,推动了AO软件在我市财政审计中的广泛应用。

  一、获取原始数据

  “总会计2000”是由北京四方志诚软件公司开发,经财政部推荐,在全国财政系统普遍推广的会计核算软件。“总会计2000”软件分单用户版和网络版两个版本。单用户版数据库采用ACCESS,采集原始数据时可直接拷贝“总会计2000”安装目录下的ACCESS文件(扩展名为MDB)即可;网络版数据库采用SQLSERVER,采集原始数据时可使用SQLSERVER的“导入和导出数据”(DTS)功能,将SQLSERVER数据库导出成ACCESS数据库格式。

  二、数据库结构分析及处理

  (一)会计科目表

  1.数据结构分析

  在“总会计2000”软件中,会计科目表由基础科目表(BM1BASE01)和会计科目表(BM1KJ01)组成。

  基础科目表(表名BM1BASE01)中存储包括科目源码(SCM),科目级次(JC),科目名称(NAME),科目类型(ATT),科目年度(YEAR)等会计科目的基本信息。会计科目表(表名BM1KJ01)中存储包括科目源码(SCM),科目级次(JC),科目年初余额(VALOO),余额方向(SF_FLAG),基础科目源码(BASESCM),科目年度(YEAR),SCM_1~SCM_8,是否末级科目(JC_FALG),自动科目编码(KJ_KMH)等字段。

  在BM1KJ01中自动科目编码(KJ_KMH)可由“总会计2000”软件按照科目级次自动生成,如果KJ_KMH字段为空,可根据BM1KJ01的SCM_1~SCM_8字段另行生成科目编码(限于篇幅,本文不作详细介绍)。本文仅就KJ_KMH已经自动生成的情况进行分析。

  2.数据处理

  在转换数据的过程中,AO软件会计科目表的“科目编码”字段可直接由BM1KJ01生成,“科目名称”字段由BM1KJ01表的“BASESCM”字段连接BM1BASE01表的“SCM”字段生成,因为我们是对2004年度进行审计,所以只选取科目年度为2004的科目,设置记录筛选条件为BM1KJ01.YEAR=2004。查询生成会计科目表的SQL语句为:(SQL1)SelectBM1KJ01.KJ_KMHAS 会计科目,BM1BASE01.NAME AS 科目名称 From BM1KJ01 INNERJOIN BM1BASE01 ONBM1KJ01.BASESCM=BM1BASE01.SCM WHEREBM1KJ01.YEAR=2004

  (二)科目余额表

  科目余额表可由BM1KJ01直接查询生成,仅需设置筛选条件筛选出2004年的科目余额即可。

  查询生成科目余额表的SQL语句为:(SQL2)Select KJ_KMH AS 科目编码,VAL00 AS科目余额,SF_FLAGAS 余额方向 From BM1KJ01erehwYEAR=2004

  (三)凭证表

  在“总会计2000”软件中,凭证表内容由BM1PD01、BM1PD02、BM1PD03三张表共同组成。在AO软件中,通过对此三张表的组合查询,生成AO软件的凭证表。

  1.BM1PD01处理

  (1)数据结构分析

  经过分析,我们发现,BM1PD01是总账科目凭证库,主要存放每一张凭证所涉及的总账科目金额和凭证基本信息(相当于凭证主表)。记录主要结构如“表一”,其中,英文是源表字段名。(表一)PDH凭单号YEAR年MONTH月 DAY日 FDJ附单据 ZY摘要 KM_ONE借方科目 KM_TWO贷方科目 VAL金额FLM(分录源码)8 20041 10 23 1183 1182 10000.00 236

  分析表一可以看出,在BM1PD01中,一张凭证只用一条记录来表示,要生成AO软件能识别的凭证分录,应把BM1PD01中每一条记录一分为二,产生liang条凭证分录,如“表二”。(表二)PDH凭单号YEAR年MONTH月 DAY日 FDJ附单据 ZY摘要 KMH科目源码 JD借贷方向 VAL金额 FLM(分录源码)8 20041 10 231183 1 10000.00 2368 2004 1 10 23 1182 -1 10000.00 236

  在“表二”所示的凭证分录中,每一条分录对应的会计科目都是总账科目,如果该总账科目有下级明细科目,则此金额是本张凭证中该总账科目的汇总金额,因该总账科目的明细分录已在BM1PD02或BM1PD03中,故此凭证分录不能作为凭证库的一部分;如果该总账科目无下级明细科目,则此金额是该总账科目的实际发生额,此凭证分录应作为凭证库的一部分。因此在BM1PD01中分离出无明细总账科目的凭证分录成为处理BM1PD01的关键。

  判断BM1PD01中的总账科目是否有明细科目,必须根据其科目源码,连接BM1KJ01表,查询生成是否有明细科目标记(JC_FLAG)字段,JC_FLAG=TRUE表示该总账科目无明细科目,JC_FLAG=FALSE表示该总账科目有明细科目。

  (2)数据处理

  A.查询生成借方分录

  查询生成BM1PD01的借方分录表:用BM1PD01的“KM_ONE”字段连接会计科目表(BM1KJ01)的“SCM”字段,合并“YEAR”、“MONTH”、“DAY”生成“凭证日期”字段,同时增加表示借贷方向的字段“借贷”并赋值“1”,设置筛选条件BM1PD01.YEAR=2004ANDBM1KJ01.JC_FLAG=true具体SQL处理语句为:(SQL3)SELECT 1 AS 借贷,A.PDHAS凭单号,TRIM(STR(A.YEAR))+-+TRIM(STR(A.MONTH))+-+TRIM(STR(A.DAY))AS凭证日期,A.FDJ AS 单据数,A.ZY AS 摘要,A.VAL AS 金额,B.KJ_KMH AS 会计科目FROMBM1PD01 AS A INNER JOIN BM1KJ01 AS B ON A.KM_ONE=B.SCMWHEREA.YEAR=2004 AND B.JC_FLAG=trueB.查询生成贷方分录

  查询生成BM1PD01的贷方分录表:用BM1PD01的“KM_TWO”字段连接会计科目表(BM1KJ01)的“SCM”字段,合并“YEAR”、“MONTH”、“DAY”生成“凭证日期”字段,同时增加表示借贷方向的字段“借贷”并赋值“-1”,设置筛选条件BM1PD01.YEAR=2004ANDBM1KJ01.JC_FLAG=true具体SQL处理语句为:(SQL4)SELECT -1 AS 借贷,A.PDHAS凭单号,TRIM(STR(A.YEAR))+-+TRIM(STR(A.MONTH))+-+TRIM(STR(A.DAY))AS凭证日期,A.FDJ AS 单据数,A.ZY AS 摘要,A.VAL AS 金额,B.KJ_KMH AS 会计科目FROMBM1PD01 AS A INNER JOIN BM1KJ01 AS B ON A.KM_TWO=B.SCMWHEREA.YEAR=2004 AND B.JC_FLAG=true

  2.BM1PD02处理

  分析发现,BM1PD02存储明细科目借方分录,记录结构如表三。(表三)FLM分录源码 SCM科目源码 VAL金额ZY摘要236119990000查询生成明细科目借方分录表:用BM1PD02的“FLM”字段连接BM1PD01的“FLM”字段、BM1PD02的“SCM”字段连接BM1KJ01的“SCM”字段查询生成“凭单号”、“凭证日期”、“附单据”、“会计科目”等字段,增加表示借贷方向的字段“借贷”并赋值“1”,设置筛选条件BM1PD01.YEAR=2004,具体SQL处理语句为:(SQL5)SELECT1AS 借贷,BM1PD01.PDHAS凭单号,TRIM(STR(BM1PD01.YEAR))+-+TRIM(STR(BM1PD01.MONTH))+-+TRIM(STR(BM1PD01.DAY))AS凭证日期,BM1PD01.FDJ AS 单据数,BM1PD02.ZY AS 摘要,BM1PD02.VALAS金额,BM1KJ01.KJ_KMH AS 会计科目 FROM BM1PD01 INNER JOIN (BM1KJ01INNERJOIN BM1PD02 ON BM1KJ01.SCM = BM1PD02.SCM) ON BM1PD01.FLM=BM1PD02.FLMerehwBM1PD01.YEAR=2004

  3.BM1PD03处理

  BM1PD03存储明细科目贷方分录,数据处理方法与BM1PD02类似,借贷方向字段“借贷”赋值“-1”,具体SQL处理语句为:(SQL6)SELECT-1AS 借贷,BM1PD01.PDHAS凭单号,TRIM(STR(BM1PD01.YEAR))+-+TRIM(STR(BM1PD01.MONTH))+-+TRIM(STR(BM1PD01.DAY))AS凭证日期,BM1PD01.FDJ AS 单据数,BM1PD03.ZY AS 摘要,BM1PD03.VALAS金额,BM1KJ01.KJ_KMH AS 会计科目 FROM BM1PD01 INNER JOIN (BM1KJ01INNERJOIN BM1PD03 ON BM1KJ01.SCM = BM1PD03.SCM) ON BM1PD01.FLM=BM1PD03.FLMerehwBM1PD01.YEAR=2004

  4.生成完整凭证表

  合并SQL3、SQL4、SQL5、SQL6生成完整凭证表,合并关键字为UNION。即:(SQL7)SQL3 UNIONSQL4UNION SQL5 UNION SQL6其中SQL3、SQL4、SQL5、SQL6为上述具体SQL语句。

  三、在AO中转换数据并制作数据库数据导入模板

  (一)转换数据

  1.通过AO系统“项目管理”→“资料管理”→“从系统引入资料”直接引入获取的“总会计2000”ACCESS数据库数据。2.生成财务数据中间表时,凭证的存储方式选择“源数据凭证表为一个表”。3.在“数据导入向导”各步骤中,“会计期间定义”和“科目设置”步骤根据实际情况使用“手工填写”,“科目余额表”、“会计科目表”、“凭证表”的导入均使用“进入SQL执行器”。

  4.导入科目余额表

  导入科目余额表时,在“SQL语句组”中输入“SQL2”对应的SQL语句,输入相应的临时表名,设置好与AO科目余额表的对应关系,导入即可。

  5.导入会计科目表

  导入会计科目表时,在“SQL语句组”中输入“SQL1”对应的SQL语句,输入相应的临时表名,设置好与AO会计科目表的对应关系,导入即可。

  6.导入凭证表

  导入凭证表时,在“SQL语句组”中输入“SQL7”对应的SQL语句,输入相应的临时表名,设置好与AO凭证表的对应关系,导入即可。

  (二)制作数据导入模板

  在凭证表导入结束后,在“数据导入向导”中单击“保存导入设置”即可将数据转换过程中的步骤(包括SQL语句)保存为一个数据导入模板,并可通过“导入”“导出”功能将此模板分发给其他审计人员使用。

  (三)使用数据导入模板

  其他审计人员转换数据时,在“数据导入向导”中单击“自动导入”,选择相应模板,设置好数据源即可根据软件提示完成数据库数据的导入。


谈股论金】【收藏此页】【 】【多种方式看新闻】【下载点点通】【打印】【关闭


新 闻 查 询
关键词
热 点 专 题
高考最后冲刺
雀巢奶粉碘含量超标
中美中欧贸易争端
日本甲级战犯罪行
二战重大战役回顾
明星电话被曝光
汽车笑话集锦
湖南卫视05超级女声
后金庸武侠圣经


新浪网财经纵横网友意见留言板 电话:010-82628888-5174   欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 会员注册 | 产品答疑

Copyright © 1996 - 2005 SINA Inc. All Rights Reserved

版权所有 新浪网

北京市通信公司提供网络带宽