分配物料同步更新不成功解决方案
金蝶云社区-yongji_bu
yongji_bu
11人赞赏了该文章 7717次浏览 未经作者许可,禁止转载编辑于2015年07月02日 11:39:26

分配物料同步更新不成功的主要原因是后台记录关联关系丢失了。造成关联关系丢失的原因有多种,如:1、基础资料控制策略配置出错;2、物料进行过引入操作。
针对关系关系丢失的解决方案:
一、查询数据库是否存在有关联关系丢失数据。如果下面的SQL语句查出有数据,则表明存在关联关系丢失的情况。
SELECT BMI.FENTRYID ,
BMI.FINVPTYID ,
BM.FMasterId
FROM T_BD_MATERIAL BM
INNER JOIN T_BD_MATERIALINVPTY BMI ON BMI.FMATERIALID = BM.FMATERIALID
AND BMI.FMASTERID = 0
WHERE BM.FMASTERID <> BM.FMATERIALID;
二、修复关联关系丢失数据,执行下面的SQL语句。

IF EXISTS ( SELECT *
FROM sysobjects
WHERE xtype = 'u'
AND name = 'T_BD_MATERIALINVPTY_BAK' )
DROP TABLE T_BD_MATERIALINVPTY_BAK;
--执行备份
SELECT *
INTO T_BD_MATERIALINVPTY_BAK
FROM T_BD_MATERIALINVPTY;
--错误数据
SELECT BMI.FENTRYID ,
BMI.FINVPTYID ,
BM.FMasterId
INTO #TEMP
FROM T_BD_MATERIAL BM
INNER JOIN T_BD_MATERIALINVPTY BMI ON BMI.FMATERIALID = BM.FMATERIALID
AND BMI.FMASTERID = 0
WHERE BM.FMASTERID <> BM.FMATERIALID;

--更新数据
SELECT T.FENTRYID ,
BMI.FENTRYID AS FMasterId
INTO #TEMPUUPDATE
FROM T_BD_MATERIAL BM
INNER JOIN T_BD_MATERIALINVPTY BMI ON BMI.FMATERIALID = BM.FMATERIALID
INNER JOIN #TEMP T ON T.FMasterId = BM.FMATERIALID
AND T.FINVPTYID = BMI.FINVPTYID
WHERE BM.FMASTERID = BM.FMATERIALID
--执行更新
UPDATE T_BD_MATERIALINVPTY
SET FMasterId = TU.FMasterId
FROM T_BD_MATERIALINVPTY BMI
INNER JOIN #TEMPUUPDATE TU ON TU.FENTRYID = BMI.FENTRYID