为了使科目表能顺利导入AO,须对“科目代码”字段进行修改,首先使编码统一为4-3-3-3,其次要去掉分隔符(测试时,如果不去掉会出错)。
举例说明:查找二级科目的位数,发现科目代码有的是7位,如:5502.07,有的是8位,如:1002.001。这时,需将7位的变成8位,即在5502.后面加0,变成5502.007(SQL语句见下图)。
采用同样的方法,可将三级和四级科目都统一编制成为规则的代码。语句示例如下:
select distinct len(科目代码) from ykmb where 科目级次='3'(返回结果为11、12)
select * from ykmb where len(科目代码)=11 and 科目级次='3'
update ykmb set 科目代码=left(科目代
码,9)+'0'+right(科目代码,2) where len(科目代码)=11;
select distinct len(科目代码) from ykmb where 科目级次='4'(返回结果为14)
select * from ykmb where len(科目代码)=14 and 科目级次='4'
update ykmb set 科目代码=left(科目代
码,9)+'0'+right(科目代码,5) where len(科目代码)=14;
select distinct len(科目代码) from ykmb where 科目级次='4'(返回结果为15)
select * from ykmb where len(科目代码)=15 and 科目级次='4'
update ykmb set 科目代码=left(科目代
码,13)+'0'+right(科目代码,2) where len(科目代码)=15。
在此基础上,我们用update ykmb set 科目代码=replace(科目代码,'.','') from ykmb的语句去掉科目代码中的分隔符——小数点。
经过以上整理,科目表已符合AO的导入要求。 (二)整理凭证表
源凭证表,分为两张表。一为凭证表ypzb,一为凭证分录表ypzfb。前者包含的字段主要有:会计年度、会计期间、凭证号、借方金额合计、贷方金额合计、单据类型、记账人、审核人等。后者包含的字段主要有:分录号、摘要、科目内码、核算项目、余额方向、原币金额、对方科目等。
为了方便导入AO,最好通过“凭证内码”(唯一的凭证识别码)把凭证表ypzb和凭证附表ypzfb合并生成一张新凭证表(pzb)。考虑到凭证附表中只有“科目内码”(科目ID),没有能区分科目级别的“科目代码”。因此还需通过“科目内码”字段将凭证附表与科目表相关联,以将“科目代码”这个字段加入新的凭证表。SQL语句为:
Select a.凭证日期,a.会计年度,a.会计期间, a.凭证号,a.借方金额合计,a.贷方金额合计, a.单据类型,a.记账人,a.审核人,b.分录号, b.摘要,b.科目内码, b.核算项目,b.余额方向,b.原币金额, b.本位币金额,b.对方科目,c.科目代码 into pzb from ypzb a,ypzfb b,ykmb c where a.凭证内码=b.凭证内码 and b.科目内码=c.科目内码
此时,凭证表(pzb)已整理完毕。因为本表中包含2007年至2009年的数据,为简化操作,把它们按年度筛选成3张表。
Select * into pzb2009 from pzb where 会计年度=’2009’