分享

金蝶K3-V10.7财务软件数据库数据导入AO方法

 鼓山3 2012-02-06
金蝶K3-V10.7财务软件数据库数据导入AO方法
【点击数: 607 】【时间:2011-06-07 09:39:16.0】
  近日,在对某单位财务备份数据进行转换时发现,该单位财务软件为金蝶K3,目前已升级至V10.7版本,而笔者AO中的采集转换模板为V10.0版本,无法通过模板直接转换。笔者决定采集该单位财务软件的后台数据,用数据库数据采集方法进行数据采集。该软件的后台数据存放在SLQ SERVER2000数据库中,将SLQ SERVER2000服务管理停止后,从库中直接将数据拷贝至审计人员电脑。以下为笔者分析转换过程。
  1 表及表结构分析
要想将后台数据转换到AO中,需要提取3张表,即凭证表、科目表和余额表。打开SLQ SERVER2000的企业管理器,将被审计单位的数据附加到SLQ SERVER2000中。经过对库中所有表进行分析后,笔者找出了转换所需要的表:
  1.1 凭证表:金蝶K3V10.7财务软件凭证表在后台分为凭证主表和凭证子表两张表存储。
  凭证主表:表名为t_Voucher
  表中包含字段有:fdate凭证日期,fperiod会计期间,fnumber凭证号,fexplanation摘要,ftrantype单据类型,fgroupid凭证类型1为记账凭证。
  凭证子表:表名为t_VoucherEntry
  表中包含字段有:fexplanation摘要,faccountid科目内码,fdetailid核算项目,fdc余额方向1为借,0为贷,famount金额,fquantity数量,fmeasureunitid单位内码,funitprice单价。
  需要注意的是:凭证表中科目代码需要faccountid科目内码与科目表中的faccountid关联得到fnumber科目代码。
  1.2 科目表:表名为t_Account
  表中包含字段有:faccountid科目内码,fnumber科目代码,fname科目名称,fdc借贷方向,1为借,-1为贷。
  1.3 余额表:表名为t_balance
  表中包含字段有:fyear会计年度,fperiod会计期间,faccountid科目内码,FBeginBalance期初余额,用正负表示借贷方向,fdetailid核算项目使用内码。
  2 前期表整理
  2.1 科目表整理
  经对科目表分析得知,金蝶K3V10中原科目编码长度有3478101113(编码长度中含区分级数的“.”),为不规则编码,向AO中导入时需将其转换成规则的编码。笔者将其改为4333格式, 一级不足的后加“9”,其他各级位数不足的前加“9”,整理过程及sql语句如下:
  2.1.1 原科目编码长度为3位,转换成4
  Sql语句:
  update dbo.t_Account set fnumber=fnumber+''9''
  where len(fnumber)=3
  2.1.2 原科目编码长度为4位保留不用改
  2.1.3 原科目编码长度为7位,转换成43格式
  Sql语句:
  Update dbo.t_Account set fnumber=left(fnumber,4)+ ''9''+substring(fnumber,6,2)
  Where len(fnumber)=7
  2.1.4 原科目编码长度为8位,转换成43格式
  Sql语句为:
  Update dbo.t_Account set fnumber=left(fnumber,4)
  +right(fnumber,3)
  Where len(fnumber)=8
  2.1.5 原科目编码长度为10位,转换成43-3格式
  Sql语句为:
  update dbo.t_Account set fnumber=left(fnumber,4)
  +''9''+substring(fnumber,6,2)+''9''
  +substring(fnumber,9,2)
  where len(fnumber)=10
  2.1.6 原科目编码长度为11位,转换成43-3格式
  Sql语句为:
  update dbo.t_Account set fnumber=left(fnumber,4)
  +''9''+substring(fnumber,6,2)+right(fnumber,3)
  where len(fnumber)=11
  2.1.7 原科目编码长度为13位,转换成43-3-3格式
  Sql语句为:
  Update dbo.t_Account set fnumber=left(fnumber,4)
  +''9''+substring(fnumber,6,2)+''9''+substring(fnumber,9,2)+''9''+substring(fnumber,12,2)
  where len(fnumber)=13
  2.1.8 将科目编码fnumber字段替换成ccode字段,同时将科目表名t_Account改成熟悉的a_code
  注意此时需将科目表中的科目编码fnumber字段替换成ccode字段,否则将与凭证主表中的凭证号fnumber字段重复。
  Sql语句为:
  select FAccountID,FNumber ccode,FName,FDC  
  into a_code
  from dbo.t_Account
  2.2 余额表整理
  2.2.1 只保留期初余额即可,fcurrencyid为币别字段:0为人民币,1为其他币种。因金蝶财务软件后台存储的为多年度数据,需根据审计时间设定条件,本次审计  为2009年。
  Sql语句为:
  select *
  into a_a_balance
  from t_balance
  where fyear=2009 and fperiod=1 and fdetailid=0 and fcurrencyid=0
  2.2.2 将科目代码和科目名称加入余额表,存入新表a_ye
  Sql语句为:
  select a.*,b.ccode,b.fname
  into a_ye
  from  a_a_balance a join a_code b
    on a.faccountid=b.faccountid
  2.2.3 将按科目代码和科目名称分组,求出各科目期初余额,更改字段名为ye,存入新表a_yeb
  select ccode,fname,sum(fbeginbalancefor) as ye
  into a_yeb
  from a_ye
  group by ccode,fname
  2.3 凭证表整理
  将凭证主表和凭证子表合成一张表,将科目代码和科目名称存入新凭证表a_accvouch
  select a.FDate,a.FYear,a.FPeriod,a.FNumber,
  a.FExplanation,a.FTranType, b.FAccountID,
  b.FDetailID,b.FDC,b.FAmount,b.FQuantity,
  b.FUnitPrice,c.ccode,c.fname
  into a_accvouch
  from dbo.t_Voucher a join dbo.t_VoucherEntry b on a.fvoucherid=b.fvoucherid join a_code c on b.faccountid=c.faccountid
  where a.fyear=2009
  3 将整理好的表导入AO
  通过上述整理,得到新的3张表,即凭证表a_accvouch、科目表a_code、余额表a_yeb,根据AO软件的数据库数据导入要求,分步将3张数据表导入AO
  打开AO,依次点击“采集转换-财务数据-财务软件数据库数据-采集数据-新建”,新建一个账套,并双击该账套。
  再依次点击“添加”,选择sql server再单击“设置”, 在弹出的对象框中进行如下设置:
  3.1 “选择或输入服务器名称”下的下拉菜单中选择“(local)”;
  3.2 “输入登录服务器信息”下的选项中,选择第一个“使用windows nt 集成安全设置(w)”;
  3.3 “在服务器上选择数据库(d)”的下拉菜单中选择上述整理好的3张表所在数据库名。
  然后点击“测试连接”后弹出“测试连接成功”窗口,依次点击“确定”后,点“刷新”按钮后,显示区域就会出现数据源,点击“下一步”后选中3张表,然后依次点击“下一步”,选择直接生成财务数据临时表。在导入方式下有两种方式,选择“源数据凭证表为一张表”(原为两张表,经过整理后变成一张表)。
  以下为3张数据表导入过程:
  3.3.1 会计期间定义:选择需导入的年度
  3.3.2 科目余额表(a_yeb
  导入所需字段:期初余额Ye(正数为借方余额、负数为贷方余额)、科目编码:ccode
  3.3.3 会计科目表(a_code
  导入所需字段:科目名称fname、科目借贷方向fdc、科目编码:ccode
  3.3.4 科目设置:科目编码格式为规则,原为不规则,经过数据整理后变成规则的4333格式。
  3.3.5 凭证库(a_accvouch
  导入所需字段:凭证日期fdate、凭证流水号fnumber、凭证类型ftrantype、发生额famount、发生额方向fdc(借方为1、贷方为0)、摘要fexplanation、科目编码  ccode
  凭证表导入后,经过科目方向调整、科目余额调整和账表重建,数据导入工作就完成了。
  纵观整个数据导入过程,前期基础表的整理是关键,必须先将原不规则的科目代码整理成规则的科目代码,为了方便导入,在数据量不大的情况下,可将凭证主表和凭证子表合并成一张表导入。(淮安市审计局供稿 王新建)

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多