2017-08-07 8 views
0

私はacumaticaのProject Budget Screenで作業しています。この画面では、PMProjectStatusのProjectionテーブルであるPMProjectStatusExテーブルが使用されています。そこで私は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

あなたはプロジェクトエディタのデータアクセス部を使用してフィールドを追加すると、それはシーンの背後にあるテーブルを更新するために、DBのスクリプトを生成します。 enter image description here

enter image description here

CODEセクションのDAC拡張を使用してフィールドを追加すると、DBスクリプトは生成されません。

その場合、スクリプトを手動でDBスクリプトセクションに追加する必要があります。

EDIT

一つ手動でDBのスクリプトでの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