下午有伙伴在社区提问,物料在制单的时候报错,一时兴起远程看了一下这个问题,数据库处理以后顺利解决了这个问题,现在分享一下解决办法。
原帖地址:
https://vip.kingdee.com/questions/522764516413713408?productLineId=11
一、问题现象
在做供应链单据时按F7选择对应物料时提示如下图:
二、问题分析
去系统设置-公共资料-物料里进行查询时确实有这个物料代码146673-51320,但是在做供应链单据却无法正常选择,习惯性进入SSMS进行物料信息查询
select * from t_item where fnumber='146673-51320'
select * from t_icitem where fnumber='146673-51320'
第一个语句查询出来有数据出来,第二个语句执行以后却是空白。
但是根据fitemid来进行查询的时候却发现有物料信息:
select * from t_icitem where fitemid=(select fitemid from t_item where fnumber='146673-51320')
经过比较以后发现t_icitem表中fnumber字段在146673-51320前面多了个空格,所以造成这个物料在使用时无法根据物料代码来匹配物料信息。
三、解决办法
执行语句将物料代码更新一下即可
update t_icitem set fnumber='146673-51320' where fitemid=(select fitemid from t_item where fnumber=146673-51320')
处理完这个物料以后伙伴反映还有其他物料也有这个问题,再远程过去通过语句进行查询出来有8条数据,然后再手动更新一下fnumber就正常了。
select a.fitemid,a.fnumber,b.fnumber from t_item a left join t_icitem b on a.fitemid=b.fitemid where a.fnumber<>b.fnumber
特别说明:核算项目资料相对来说特殊一点,t_Item(基础资料主表)存储的代码和名称,其他的附属信息放在对应的明细表内,可以根据以下语句查看对应的明细表
SELECT * FROM dbo.t_ItemClass
当出现类似的问题时可以查询t_item表和对应的明细表的数据,可能存在不一致或者明细表里丢失记录的情况,根据实际情况更新一下异常数据或者补上对应的记录即可。
推荐阅读