在掌据了KIS标准产品出纳模块数据库结构的基础上,我们来进一步学习出纳模块期末轧账报错常见数据问题的分析思路和解块方法。
出纳模块轧账出现错误,一般跟数据库中出现非法记录和数据库表损坏有关系。下面我们根据案例来具体分析出纳轧账中遇到错误的分析思路和解决方法。
【例4】金华电子有限公司在出纳模块进行出纳期末轧账时出现“出纳结账过程中遇到错误,操作失败”的提示,如图13 - 46所示。
图13 -46 出纳期末轧账报错信息
分析:
在数据库中以TR开头的表都是出纳业务的数据表。出纳模块期末轧账在后台数据库的关键过程为:
(1)将本期现金日记账和银行日记账发生额汇总至出纳现金银行存款余额表的发生额和累计发生额中。
(2)将现金银行存款余额表中的本期期末余额写入到下期期初余额。
(3)更新账套参数表glpref中的FTRClosedDate出纳轧账日期。
注意:
在进行数据处理前请先备份账套。
根据出纳轧账的过程来看,进行出纳轧账时涉及到的数据主要有现金日记账TRCashJnl、银行日记账TRBankJnl、现金/银行存款余额表TRBankJnlBal。在数据处理中可以首先查看这三张表中是否存在非法记录,是否有记录不完整以及是否有数据表损坏。
(1)打开【现金日记账】查看,发现在日记账中存在凭证日期是本期,期间为13期的记录。如图13 -47所示。
图13 -47 现金日记账中出现13期记录
查看【账套选项】中的【账套参数】信息,确认客户使用的是自然年度会计期间。如图13 -48所示。
图13 -48 确认客户使用的是自然会计期间
由于自然会计期间不可能存在13期的记录,因此首先可以判断是现金日记账中存在非法记录值。
通过语句Select from TRCashJnl where Fperiod =13查询出现金日记账表TRcashjnl中13期的数据,结果如图13 -49所示。
图13 -49 查询出纳现金日记账TRCashJnl中13期的记录
如果在SQL视图中执行语句Update TRCashJnl SET Fperiod=month (Fdate),将期间更改为与日期所在期间一致,修改完成后在现金日记账中查询正常。如图13 -50所示。
图13-50 修正后的现金日记账
以同样的方式修正银行日记账TRBankJnl中13期的记录,操作完成后,再次进行期末轧账操作,如果发现还是提示同样的错误,则需要进一步分析处理。
(2)打开银行日记账表TRBankJnl,发现FExchRate,FDebit-Base,FCreditBase中有部分记录丢失,如图13 - 51所示。
图13-51 银行日记账中记录丢失
表中所丢失的记录为换算率和本位币借贷方金额。根据关系FDebitBase=FDebit FExchRate FCreditBase=FCredit FEXchRate,FBalanceBase= FBalance FExchRate,我们可以通过币别中的期末汇率更新日记账中的汇率,执行语句为:
UPDATE GLCyINNER JOIN TRBankJnl ON
GLCy. FCyID= TRBmkjnl. FCyID SET TRBankJnl. FExchRate= GLCy.FEndRate
WHERE
year (TRBankjnl.Fdate) 100+ month(TRBankJnl.Fdate)≥[ selectyear(FTRClosedDate) 100+ month(FRclosedDate) from gl-pref]
换行成功后,根据厚币、换算率与本位币之间的换算关系更新本位币的金额。
UPDATE TRbankjnl SFI’FDebitBaae= FDebit'FExchRate.FCred-itBaae= FCredit.FExchRate,
FBalanceBase= FBalance'FExchRate
WHERE
year (TRBankjnl.Fdate)‘100+ month(TRBanUnl.FtWe)≥(selecty.ear(fTRaosedDate)‘100+ montb(FTROosedDaie)fmm gl-pref)
使用同样的方法更新现金日记账中丢失的记录。
当出纳模块期末结账出现系统报错时,可以考虑以下几个解决方法:
(1)将现金日记账和银行日记账中存在的非法记录修改正确。
(2)将数据表中丢失的数据补充完整。
(3)如有数据表损坏,则需要替换对应的表。