分配物料同步更新BOM不成功
金蝶云社区-Sunning
Sunning
4人赞赏了该文章 1,194次浏览 未经作者许可,禁止转载编辑于2018年06月22日 22:18:56

分配物料同步更新不成功的主要原因是后台记录关联关系丢失了。造成关联关系丢失的原因有多种,如: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


图标赞 4
4人点赞
还没有人点赞,快来当第一个点赞的人吧!
图标打赏
0人打赏
还没有人打赏,快来当第一个打赏的人吧!