2017-08-07 47 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