【问题描述】
旗舰版操作固定资产的时候,点击保存提示“可能由于网络原因,卡片保存失败,请重新保存”?
【场景介绍】
该问题原因比较复杂,最常见的有两种原因,一种是固定资产基础表缺失信息,另一种是固定资产表缺失触发器。一般来说,跨版本跨产品升级上来的账套出现该问题居多。
【解决方案】
1、建议优先对触发器进行排查,用演示账套的触发器和问题账套的触发器进行对比。该问题的触发器有两种情况,一种是缺失触发器,另一种是触发器被关闭了没有开启。需要对两种情况逐一进行排查:
①缺失触发器,请用以下语句进行排查(需要知道演示账套的账套号并进行替换):
select name from 演示账套账套号..sysobjects where type=’tr’ and name like ‘%fa%’
except
select name from sysobjects where type=’tr’ and name like ‘%fa%’
如:
select name from AIS201407281401391..sysobjects where type=’tr’ and name like ‘%fa%’
except
select name from sysobjects where type=’tr’ and name like ‘%fa%’
如果查到有缺失的话,就会显示在查询结果中,需要在演示账套中找到对应数据表中的触发器,在问题账套中进行新增。
查询触发器新增语句:sp_helptext 触发器名,该语句需要在演示账套中执行,查询出来的结果的问题账套中执行即可。
②是否存在已关闭的触发器,请用以下语句进行排查:
select * from sys.triggers where is_isabled=1
如果查询出数据,代表了这个触发器已被关闭,需要打开该触发器,打开触发器需要找到对应的数据表后,再启用触发器
2、固定资产基础信息表中缺失信息:
需要逐个对t_fa……的表进行排查,并且与演示账套的数据进行对比。固定资产基础表中不会存在fbalid和falterid这两个字段,如果该表中有其中一个字段,代表这个表不是固定资产基础信息表。固定资产所有后台表大约有60多个,基础表有15~20个。查出数据后要着重留意带*的数据,一般fid=0,该数据缺失会引起问题的报错。
该问题其实就是固定资产基础信息表t_faeconomyuse(经济用途)缺失了fid=0的数据,用以下语句进行插入后,在正常进行保存即可:
insert into t_faeconomyuse
select * from 演示账套账套号..t_faeconomyuse where fid=0
【注意事项】
正式账套执行脚本前请先做好备份,建议待在测试账套中核实无误后再在正式账套中执行。