如何利用Access查询采集用友8.x辅助帐
发布时间:2010-06-16 19:41
在线咨询
重要提醒:本网站所发布内容为转载资讯,供您浏览和参考之用,请您对相关内容自行辨别及判断,本网站对此不承担任何责任。凡私自告知添加联系方式、保证无条件入职、收取各种费用等信息,请保持高度警惕,防止上当受骗造成各种损失。
今年在对某单位开展计算机审计时,了解到被审计单位财务核算软件为用友8.0,后台数据库为SQL Server 2000。笔者使用用友8.x SQLServer备份模板将该单位财务数据导入到AO中,但在进行会计科目审查时发现,由于被审计单位对预付帐款、其他应收款、应付帐款等往来核算项目实行了辅助核算,因此在AO科目审查中无法查看到往来核算明细科目。
在这种情况下,审计人员要对往来核算明细进行审查,就仍然要翻阅手工明细帐,给审计工作带来了很大的不便,也极大地影响了审计效率的提高。笔者经过对财务软件后台数据库表进行分析,探索出了利用Access查询生成新的科目表、余额表及凭证表,从而实现在AO中导入往来辅助帐的方法,介绍出来供读者参考。
一、确定导入往来辅助帐所需要的数据表及表间关系
㈠基本数据表:
1.code 科目表;
2.GL_accsum 科目余额表;
3.GL_accvouch 凭证表
㈡往来辅助核算表:
1.Customer 单位往来编码表
2.Person 个人往来编码表
3.Vendor 应付款项编码表
㈢辅助核算表与凭证表之间的关系如下所示:
序号 凭证表 关联字段 辅助核算表 关联字段
1 GL_accvouch cperson_id PersoncPersonCode
2 GL_accvouch ccus_id Customer cCusCode
3 GL_accvouch csup_id VendorcVenCode
二、具体步骤
㈠采集原始数据并进行数据整理
1.采集数据。从被审计单位采集用友8.0财务软件的SQL Server备份数据,拷贝到审计人员的电脑中进行数据库还原,然后选择code、GL_accsum、GL_accvouch、Customer、Person、Vendor共六张表导出到Access数据库中。
2.数据整理。由于被审计单位在对辅助核算科目进行编码时存在个别不规则的现象,因此要对数据进行规范化整理。例如Customer表的cCusCode字段应以“KH”加数字编码组成,对其进行整理时,执行如下查询:
Select * from Customer where cCusCode not like ’KH*’
筛选出编码不规则的记录,利用编辑菜单的替换功能进行批量更改。Person表的cPersonCode字段应以“GR” 加数字编码组成,Vendor表的cVenCode字段应以“GYS”加数字编码组成,整理方法同Customer表。
㈡生成新的数据表
1.生成新科目余额表
⑴生成余额表。查询语句如下:
SELECT GL_accsum.ccode AS 科目编码, GL_accsum.mb AS 期初余额, GL_accsum.cendd_c AS 余额方向 INTO 余额表 FROM GL_accsum
WHERE (((GL_accsum.iperiod)=1))
ORDER BY GL_accsum.ccode;
⑵生成往来余额明细表。查询语句如下:
SELECT GL_accvouch.ccode AS 科目编码, GL_accvouch.md AS 借方余额, GL_accvouch.mc AS 贷方余额, GL_accvouch.cperson_id AS 个人往来编码, Person.cPersonName, GL_accvouch.csup_id AS 应付单位编码, Vendor.cVenName, GL_accvouch.ccus_id AS 单位往来编码, Customer.cCusName, GL_accvouch.dbill_date INTO 往来余额明细表
FROM Vendor RIGHT JOIN
(Customer RIGHT JOIN (Person RIGHT JOIN GL_accvouch ON Person.
cPersonCode = GL_accvouch.cperson_id)
ON Customer.cCusCode = GL_accvouch.ccus_id) ON
Vendor.cVenCode = GL_accvouch.csup_id WHERE
(((GL_accvouch.dbill_date) Like ’2007-12-31‘));
⑶生成新往来余额表。查询语句如下:
SELECT
IIf([单位往来编码] Is Not Null,IIf(Len([单位往来编码])=3,余额表。科目编码+’0’+Right([单位往来编码],1),余额表。科目编码+Right([单位往来编码],2)),
IIf([应付单位编码] Is Not Null,IIf(Len([应付单位编码])=4,余额表。科目编码+’0’+Right([应付单位编码],1),余额表。科目编码+Right([应付单位编码],2)),
IIf(Len([个人往来编码])=3,余额表。科目编码+’0’+Right([个人往来编码],1),余额表。科目编码+Right([个人往来编码],2)))) AS 新科目编码,
IIf([借方余额]>0,[借方余额],[贷方余额]) AS 余额,
IIf([借方余额]>0,’借‘,’贷‘) AS 方向,
IIf([cpersonname] Is Not Null,[cpersonname],IIf([cvenname] Is Not Null,[cvenname],[ccusname])) AS 科目名称 INTO 新往来余额表
FROM 往来余额明细表 INNER JOIN 余额表 ON 往来余额明细表。科目编码 = 余额表。科目编码;
⑷生成新余额表。查询语句如下:
SELECT * INTO 新余额表 FROM [SELECT * from 余额表
union select 新科目编码,余额,方向 from 新往来余额表]. AS A
ORDER BY A.科目编码;