最新U9C更新方式
https://success.yonyou.com/community/askDetail?aId=5816881121fbf549e5b4247c41ea84d91d9f7ed00d9da70f&cid=d65f538614c87d47&themeType=3
exec dbo.P_SyncFieldCombineNameNew 'UFIDA.U9.CBO.SCM.Item.ItemMaster','Global',3,'admin',1002011066091830
更新销售订单行第18个扩展字段(ZDY016配送点值集)的示例SQL,A.ID=1002111020110059为销售订单行示例ID
-- 查询销售订单行的扩展字段18(配送点自定义值集,非枚举,使用Fun_Cust_Table_DefineValue存储过程关联)
SELECT A.ID,ISNULL(def.Code, '') Code,ISNULL(def.Name, '') Name,'zh-CN' as SysMLFlag INTO #TempDataID FROM dbo.SM_SOLine A
LEFT JOIN dbo.Fun_Cust_Table_DefineValue('ZDY016') def ON def.Code=A.DescFlexField_PrivateDescSeg18
WHERE A.ID=1002111020110059
-- 50的意思公有段有50个,私有段就是50往上加,如果是刷新公有段,直接是几就是几
EXEC dbo.P_Samuel_CombineNameUpdate 'SM_SOLine','#TempDataID',68 -- 68=50+18
DROP TABLE #TempDataID;
存储过程:Fun\_Cust\_Table\_DefineValue
/****** Object: UserDefinedFunction [dbo].[Fun_Cust_Table_DefineValue] Script Date: 2021/11/2 15:50:12 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE OR ALTER FUNCTION [dbo].[Fun_Cust_Table_DefineValue]
(@code NVARCHAR(50))
RETURNS @t TABLE(ID BIGINT, Code NVARCHAR(50),Name NVARCHAR(50))
AS
BEGIN
INSERT INTO @t
SELECT c.ID,c.Code,C2.Name
FROM dbo.Base_DefineValue C
INNER JOIN dbo.Base_ValueSetDef C1 ON C1.ID=C.ValueSetDef
INNER JOIN dbo.Base_DefineValue_Trl AS C2 ON C.ID=C2.ID
WHERE C1.Code=@code
RETURN
END
GO
C# 方法封装
/// <summary>
/// 更新表中扩展字段是自定义值集的多语言
/// </summary>
/// <param name="tbName">要更新的表名</param>
/// <param name="define">要更新的自定义值集编码</param>
/// <param name="fieldIdx">要更新的表的扩展字段索引</param>
/// <param name="ids">要更新的表的id集合,null或者长度为0则更新全部</param>
public static void UpdateTrlByDefineValue(string tbName, string define, int fieldIdx, List<long> ids)
{
string updTrlSql = string.Format(@"SELECT A.ID,ISNULL(def.Code, '') Code,ISNULL(def.Name, '') Name,'zh-CN' as SysMLFlag INTO #TempDataID FROM dbo.{0} A
LEFT JOIN dbo.Fun_Cust_Table_DefineValue('{1}') def ON def.Code=A.DescFlexField_PrivateDescSeg{2}
{4}
EXEC dbo.P_Samuel_CombineNameUpdate '{0}','#TempDataID',{3}
DROP TABLE #TempDataID", tbName, define, fieldIdx, 50 + fieldIdx
, ids != null && ids.Count > 0 ? string.Format("WHERE A.ID in ({0})", string.Join(",", ids)) : "");
DataAccessor.RunSQL(DataAccessor.GetConn(), updTrlSql, null);
}
评论 (0)