2017-08-07 54 views
0

我正在使用acumatica的项目预算屏幕,屏幕使用表PMProjectStatusEx,它是PMProjectStatus的Projection表。所以我扩展了PMProjectStatus表并在其中添加了一个字段,我还扩展了PMProjectStatusEx以添加相同的字段并将其添加到屏幕。但与更新物理表PMProjectStatus的标准字段不同,我添加的字段不会更新物理表。这可能是什么原因?下面是我的代码Acumatica扩展PMProjectStatusEx

感谢

public class PMProjectStatusExt : 
PXCacheExtension<PX.Objects.PM.PMProjectStatus> 
{ 
    #region UsrMarkupPct 
    public abstract class usrMarkupPct : PX.Data.IBqlField 
    { 
    } 
    protected Decimal? _UsrMarkupPct; 
    [PXDBDecimal(6, MinValue = 0, MaxValue = 1000)] 
    //[PXDefault(TypeCode.Decimal, "0.0")] 
    [PXUIField(DisplayName = "Markup %")] 
    public virtual Decimal? UsrMarkupPct 
    { 
     get 
     { 
      return this._UsrMarkupPct; 
     } 
     set 
     { 
      this._UsrMarkupPct = value; 
     } 
    } 
    #endregion 


public class PMProjectStatusExExt : 
PXCacheExtension<PX.Objects.PM.PMProjectStatusEx> 
    { 
     #region UsrMarkupPct 
     public abstract class usrMarkupPct : PX.Data.IBqlField 
     { 
     } 
     protected Decimal? _UsrMarkupPct; 
     [PXDBDecimal(6, MinValue = 0, MaxValue = 1000, BqlField = typeof(PMProjectStatusExt.usrMarkupPct))] 
     [PXDefault(TypeCode.Decimal, "0.0")] 
     [PXUIField(DisplayName = "Markup %")] 
     public virtual Decimal? UsrMarkupPct 
     { 
      get 
      { 
       return this._UsrMarkupPct; 
      } 
      set 
      { 
       this._UsrMarkupPct = value; 
      } 
     } 
     #endregion 

回答

0

当您添加使用项目编辑器的Data Access部分就会产生DB脚本来更新幕后表中的字段: enter image description here

enter image description here

当您在CODE部分使用DAC扩展添加字段时,它不会生成数据库脚本。

在这种情况下,您需要在DB脚本部分手动添加脚本。

编辑

一种方式在数据库脚本来手动添加数据库字段是:

IF NOT EXISTS(SELECT * FROM Sys.Columns WHERE Name = N'UsrMarkupPct' and 
       Object_ID = Object_ID(N'PMProjectStatus')) 
BEGIN 
    ALTER TABLE PMProjectStatus ADD UsrMarkupPct DECIMAL(19,6) 
END 
GO