马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册账号
×
之前有网友分享了如何使用excel2007的数据连接功能(数据—自其它来源—来自sql server)连接ERP数据库,从而取得需要的数据。但是该功能也有明显不足,即不能设置复杂的查询条件(也可能是本人学艺不精)。今天我将给大家陆续分享一些使用excel数据连接功能(microsoft query)制作自动查询表的案例,在分享的同时也希望能一同探讨我遇见的问题(本人专业财务)!
案例一:
背景:
我司是一家集团型公司(共有十余家子公司),集团使用的是用友U8 10.1,现集团财务总账岗位提出需求,希望能从ERP中快捷查询科目余额表,用于出具各子公司的财务报表(子公司财务较弱)。
分析:
思路一: 总账科目余额表数据存储在ERP数据库GL_Accsum表中,因此可以通过使用Excel导入外部数据的功能取该表数据,但此表要求相关月份的凭证都已审核、记账,否则不能正确取数。且该表本身不包含累计数,需要通过其他方式汇总累计金额。 思路二: 总账科目余额表数据存储在ERP数据库GL_Accsum表,凭证明细数据存储在ERP数据库GL_Accvouch表中,会计科目档案存储在ERP数据库Code表中。 查询GL_Accvouch表时,不管该凭证是否审核、记账都可以正常查询,且正常情况下本月的凭证可能还未审核、未记账,但上月的凭证一般来说都已审核、记账了,因此基于此种情况可以通过取GL_Accsum表中的“期初余额”,汇总GL_Accvouch表中的“本期借方金额”、“本期贷方金额”、“累计借方金额”、“累计贷方金额”,然后将这些数据都查询、汇总到Code表中,最后通过“期初余额+本期增加额—本期减少额=期末余额”的等式及会计科目的性质判断“期末余额方向”和“期末余额”。 第一种思路有一定的局限性,这里不多描述,我采用思路二做了相关附件,其涉及Excel表中的“Microsoft Query”功能(我这里不能登录服务器桌面,只能使用该方式),有关代码如下: 一、凭证明细表——GL_Accsum代码: SELECT GL_accvouch.i_id AS '凭证ID', GL_accvouch.iyear AS '会计年度', GL_accvouch.iYPeriod AS '会计年月', GL_accvouch.ino_id AS '凭证号', GL_accvouch.cbill AS '制单人', GL_accvouch.ccheck AS '审核人', GL_accvouch.cbook AS '记账人', GL_accvouch.cdigest AS '摘要', GL_accvouch.ccode AS '科目编码', GL_accvouch.cexch_name AS '币种名称', GL_accvouch.md AS '本币借方金额', GL_accvouch.mc AS '本币贷方金额', GL_accvouch.md_f AS '外币借方金额', GL_accvouch.mc_f AS '外币贷方金额', GL_accvouch.nfrat AS '汇率', GL_accvouch.csettle AS '结算方式', GL_accvouch.cn_id AS '票据号', GL_accvouch.cdept_id AS '部门编码', GL_accvouch.cperson_id AS '职员编码', GL_accvouch.ccus_id AS '客户编码', GL_accvouch.csup_id AS '供应商编码', GL_accvouch.citem_id AS '项目编码' FROM UFDATA_001_2015.dbo.GL_accvouch GL_accvouch WHERE (GL_accvouch.iyear=?) AND (GL_accvouch.iYPeriod<>201600) 二、科目余额表——GL_Accsum代码: SELECT DISTINCT GL_accsum.ccode AS '科目代码', code.ccode_name AS '科目名称', GL_accsum.iYPeriod AS '会计年月', GL_accsum.cbegind_c AS '期初金额方向', Sum(isnull(GL_accsum.mb,0)) AS '期初余额', Sum(isnull(GL_accsum.md,0)) AS '借方发生额', Sum(isnull(GL_accsum.mc,0)) AS '贷方发生额', GL_accsum.cendd_c AS '期末金额方向', Sum(isnull(GL_accsum.me,0)) AS '期末余额' FROM UFDATA_001_2015.dbo.code code, UFDATA_001_2015.dbo.GL_accsum GL_accsum WHERE (GL_accsum.iYPeriod In ('201601','201602','201603','201604','201605','201606','201607','201608','201609','201610','201611','201612')) AND (code.iyear=?) AND (code.ccode=GL_accsum.ccode) GROUP BY GL_accsum.ccode, code.ccode_name, GL_accsum.iYPeriod, GL_accsum.cbegind_c, GL_accsum.cendd_c 三、会计科目档案表——Code代码: SELECT DISTINCT code.ccode AS '科目代码', code.ccode_name AS '科目名', code.bend AS '是否末级', code.igrade AS '科目级次' FROM UFDATA_001_2015.dbo.code code WHERE (code.iyear=?) ORDER BY code.ccode, code.ccode_name 查询完上述信息后,我在Excel中设置相应的查询公式、判断公式,最终组合成附件表格。该表解决了凭证未审核、未记账状态下不登录ERP时查询“会计科目发生额及余额”的需求,方便财务报表的出具!!
|