AO2008数据库数据的采集方法,本文主要内容关键词为:数据库论文,方法论文,数据论文,此文献不代表本站观点,内容供学术参考,文章仅供参考阅读下载。
随着被审单位信息化程度的提高和审计署AO软件应用的强力推进,审计人员利用AO软件开展计算机辅助审计的积极性也越来越高,而AO软件应用的难点——数据采集,成为审计人员运行AO软件开展计算机审计的瓶颈。虽然在AO软件中也提供了两种较简单的数据采集方法——GB/T 19581-2004国标数据和财务软件备份数据,给审计人员采集数据提供了很大的方便,但这两种方法也有其局限性,要求被审单位财务软件具有国标数据接口或AO软件中必须有与被审单位财务核算软件相一致的采集模板,否则,只能采取第三种数据采集方法,即通过财务软件数据库数据采集转换被审单位的财务数据,这种方法要求审计人员具有一定的数据库知识和会计知识,有一定的难度。笔者经过多年AO软件的应用实践,摸索出了AO软件中数据库数据的采集、分析及转换的方法,现总结出来与大家共飨。
一、财务软件数据库数据的采集方法
被审单位采用的财务核算软件千差万别,但是不管采用的是用友、金蝶等较流行的财务软件,还是行业或自行开发的财务核算软件,其采用的后台数据库不外乎两种类型,一类是单机版数据库管理系统,一类是网络版数据库管理系统。不同种类的数据库管理系统其采集的方法也不相同。
(一)财务核算软件后台数据库为单机版数据库管理系统的采集方法
对于会计核算软件后台数据库为ACCESS、FOXPRO等单机版数据库的采集,一般采用的是直接拷贝的方法。即查找到被审单位会计核算软件在计算机硬盘中的存储路径,将其拷贝到审计人员自己的优盘等存储介质中即可完成数据的采集。
(二)财务核算软件后台数据库为网络版数据库管理系统的采集方法
对于会计核算软件后台数据库为SQL Server、DB2、Oracle、Sybase等网络版数据库的采集,一般可以通过建立ODBC连接,将其财务数据转换到ACCESS数据库中,保存至审计人员自己的优盘等存储介质中即可完成数据的采集。
二、数据的清理
财务软件出于运行中保存中间结果和功能全面的需要,一般都包含几十或成百甚至上千张表,其中大部分都是空表,而对于审计人员来说,一般只需要找出其中的科目表、余额表、凭证表等很少的几张表,要从成百上千张表中找出这几张表,无异于大海捞针。笔者在实践中,编写了一段SQL Server脚本语句,可以删除其中的空表,其源代码如下:
-----删除当前数据库中的空
表-----
DECLARE @sjk varchar(50)
SELECT @sjk=DB_NAME (dbid)
FROMmaster.dbo.sysprocesses
WHERE status='runnable'
IF @sjk='master' or @sjk='model' or
@sjk='msdb' or @sjk='tempdb'
PRINT'当前数据库为系统数据库
'+@sjk+',不能删除其中的空表!'
ELSE
BEGIN
DECLARE tables CURSOR FOR SELECT name FROM sysobjects
WHERE xtype='U'
DECLARE @t sysname
DECLARE @zbs int,@scs int
SET @zbs=0
SET @scs=0
OPEN tables
FETCH NEXT FROM tables INTO @t
WHILE @@FETCH STATUS=0
BEGIN
SET @zbs=@zbs+1
IF (SELECT rows FROM sysindexes WHERE id=object_id(@t)and indid in(0,1))=0
BEGIN
EXEC('DROP TABLE'+@t)
SET @scs=@scs+1
END
FETCH NEXT FROM tables INTO @tEND
CLOSE tables
DEALLOCATE tables
PRINT'数据库'+@sjk+'中的总表数:'+CAST(@zbs as varchar(10))
PRINT'删除的空表数:'+CAST(@scs as varchar(10))
END
GO
据测试,以上代码可以删除采集到的财务数据中的全部空表,剩下的表一般只占全部表的30%左右,大大减少了审计人员分析财务数据结构的工作量。
以上代码也可用于业务数据的清理。
三、财务数据的结构分析
财务软件在进行数据结构设计时,表名和字段名一般有两种命名方法:一种是用表名或字段名的汉语拼音的第一个字母组成;一种是用表名或字段名的英文名称或其简写。下面分别将科目表、余额表、凭证表的分析方法表述如下:
(一)科目表的分析方法
科目表的表名中一般包含有KM、Account(或Acc)、Subbject、Code等关键字。主要字段有:
1.科目代码
2.科目名称
(二)余额表的分析方法
余额表的表名中一般包含有Account(或Acc)、Balance、Sum、YE、HZ等关键字。主要字段有:
1.科目代码
2.期初余额,有以下几种存储形式:
(1)借方期初余额+贷方期初余额;
(2)期初余额方向+期初余额;
(3)只存储期初余额,通过余额的正负数代表余额的方向,一般是正数代表借方期初余额,负数代表贷方期初余额。
有的会计软件在设计时,将科目表和余额表合并为一张表,其中既包含了科目信息,也包含了科目余额信息。例如金蝶K3、科发、久其、远方财务等财务软件。
(三)凭证表的分析方法
凭证表的表名中一般包含有Voucher、PZ等关键字。主要字段有:
1.会计期间:有两种设计方式
(1)全年分12个会计期间:每一会计期间为当月的1日到当月的最后一日;
(2)全年分13个会计期间:会计期间1-11为当月的1日到最后一日,第12个会计期间为12月1日至12月30日,第13个会计期间为12月31日。
2.凭证类型:常见的凭证类型有现收、现付、银收、银付、转账等。有的会计软件通过代码表示,具体中文名称需通过其他表查询获得。对核算比较简单的单位,可能只有一种凭证:记账凭证。
3.凭证流水号:各会计期间各类凭证单独编号。
4.分录号:每张凭证单独编号。
5.凭证日期:有两种类型的数据格式,日期时间型或文本型。
6.摘要
7.科目代码
8.借贷金额:一般有两种存储方式,方向+金额、借方金额+贷方金额
9.所附原始凭证的张数
10.制证、审核、记账、会计主管等会计人员
记账凭证所包含信息包括两类,凭证信息和分录信息。凭证信息指凭证类型、凭证号、凭证日期、借方发生额合计、贷方发生额合计、所附原始单据数、制证、审核、记账、会计主管等信息。此类信息在同一张凭证中是唯一的,各张凭证均包含相同结构的凭证信息。分录信息指记账凭证所记载经济业务的内容摘要、会计科目、记账方向、金额等信息。一组摘要、会计科目、记账方向、金额数据构成一条分录项信息,用一条记录存储。由于存在着一借一贷、一借多贷现象,一张凭证一般包含两条或两条以上的分录项信息,因此一张凭证一般由两条或两条以上的记录组成。
凭证表的存储方式有两种:
1.一张表存储:凭证信息与分录信息在一张表中存放。一条记录中既存储对应分录项信息,又包括该分录所对应凭证的凭证信息。例如金蝶、用友U8、金算盘、科发、安易3.11、天健会计软件等会计软件均采用这种形式。
2.凭证主表和凭证明细表两张表存储:凭证信息存储在凭证主表中,凭证分录信息存储在凭证明细表中。两张表通过凭证ID号或凭证日期(或会计期间)+凭证类型+凭证流水号关联起来。凭证主表的主要特征是一张凭证只有一条记录,且表内不含科目代码、借贷金额、摘要等凭证分录信息;凭证明细表的主要特征是一张凭证由两条或两条以上记录组成,且表内不含凭证日期、会计人员等信息。
四、AO中数据库数据采集中常见问题处理
(一)AO软件不能正确确定科目级次
造成此问题的原因是由于会计信息系统在设计时,科目代码的数据类型设计为长字符型。解决的方法是在辅助导入科目表时执行如下SQL语句即可解决:
UPDATE〈科目表〉SET科目代码=TRIM(科目代码)
(二)导入凭证表时出现“标准表达式中数据类型不匹配”错误信息
造成此问题的原因是由于凭证表的凭证日期列的数据类型为文本型的,AO软件只能识别日期型的凭证日期字段。解决的方法是在凭证表中添加一列新的凭证日期:
ALTER TABLE凭证表ADD凭证日期_new DATETIME
然后将原表中的凭证日期转换到新添加的凭证日期列(假定原表中的凭证日期长度为8,存储格式为YYYYMMDD):
UPDATE凭证表SET凭证日期_new=LEFT(凭证日期,4)+'-'+MID(凭证日期,5,2)+'-'+RIGHT(凭证日期,2)