计算机财务数据的采集是计算机审计工作最先开展的环节也是最重要的环节,数据采集的成功与否决定了计算机审计工作能否顺利开展以及能否深入检查。但现实的情况是,目前很多地域性财务软件或小品牌财务软件升级版均较难在“金审工程服务网站”找到适用的接口,计算机审计人员利用技术手段找到财务软件的“三张表”即代码表、凭证表及余额表显得越来越重要。本文将探寻快速查找“三张表”的技术方法以及实现形式。该方法的熟练掌握对于参加“审计署计算机中级考试”的学员们在较短的时间内快速准确地查找到“三张表”并取得较好成绩,同样非常重要。 一、方法思路 本方法主要利用SQL中sysobjects(系统对象表,保存当前数据库的对象,如约束、默认值、日志、规则、存储过程等)与sysindexes(系统索引表,保存当前数据库的索引名、索引编号、索引类型、是否唯一、是否主键等信息)进行关联,通过对系统对象表中xtype对象类型的选择以及对系统索引表中rowcnt字段进行行数控制等措施,去除非相关表格,从而实现快速找表的目的。此方法对所有的财务软件均适用,且几乎不需另行更改SQL语句字段,可以实现计算机审计方法的快速推广与应用。方法流程如图1所示。 需要说明的是,因备份数据中有“系统表”及“用户表”,而本查询方法只需用到“用户表”,为更精确地查询,此处用xtype=‘u’功能实现限制条件只显示用户表。这样可以排除系统表对我们所要查询表造成的干扰。同时运用rowcnt的功能,通过行数控制实现对各表的筛选以及在执行结果方便快捷地看到各表的行数,有利于计算机审计人员运用找表经验进行主观判定。 二、具体事例 (一)凭证表为合并表的情况 下面以某企业金蝶软件为例作介绍。首先将某企业金蝶软件备份数据导入SQL2008。 (1)在SQL数据库中执行下列语句
查询结果如图2。
(2)将上述查询语句结果全选复制到SQL查询界面中。由于只有2条语句,为了节省时间可以在SQL中全部选中查询语句,按F5快捷键同时执行(实现一次对多个语句的集中筛选,从而提升查找效率)。查询结果如图3。
从中可以较为容易地查找出具有科目名称与科目代码的科目代码表GLAcct并加以标注为科目表。从查询结果中可以找到科目代码的字段名称为FAcctId。 (3)将(1)中SQL语句全选后复制粘贴到SQL查询界面上,并对其进行修改:语句中的‘---’修改为‘order by科目代码‘---’,同时考虑凭证表与余额表均有可能存在于50条以上的记录,将行条数的条件修改为50条以上。修改后的查询语句如下。
执行后出现查询结果如图4。
(4)全选查询出来的结果并复制粘贴到SQL查询界面进行查询。为了快速地找表可以将语句大概约每5、6条分成一组,间隔多组,分隔情况如图5。 (5)以上述分组的第一组5条语句同时执行,出现结果如图6。
在消息框中会提示某些表中facctid无效。主要原因是由于该表中不存在与科目表中相同的科目代码。一般情况下(没有特意修改余额表与凭证表的科目代码的情况下,余额表与凭证表的科目代码应与科目表中的科目代码保持一致)可初步确定该表不是余额表或凭证表,可对相关表进行注释,即在该条语句的前面加上‘--’,以使其无法运行。排除这些表后并对其余表分组同时运行,根据余额表(科目代码含有总账与明细账科目)与凭证表(科目代码只含有明细账科目)的特征进行初步判断,如图7。