分配物料同步更新不成功解决方案
金蝶云社区-小月美文
小月美文
25人赞赏了该文章 1689次浏览 未经作者许可,禁止转载编辑于2018年05月22日 09:09:40

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

赞 25