2017-01-03 28 views
0

我有一個帶有兩個網格的窗體。每個網格都有自己的數據源。 欲瞭解更多信息,請看附圖。AX2012 - 通過創建獲取新的主表字段值

依賴於我在第一個網格中選擇哪條線,第二個網格的內容將會改變。

現在我的問題: 如果我在第一個網格上創建一個新的行,我無法在第二個網格中輸入值,因爲ax不給我一個新的「組合ID」(主域,INT)

enter image description here

我該如何解決這個問題?

+0

你如何在第一個網格中填充組合ID?按數字順序排列嗎?無論如何,在超級插入第一個網格表的方法之後,在第二個網格表中插入一個帶有組合ID的新記錄,如同第一個網格表中一樣。 –

回答

1

這看起來像一個親子形式,其中上面的網格是你的「標題」,而下面是你的「線條」。

如果CombinationID是您的主鍵,它應該可能是通過數字序列或獨特的方式生成的。

在窗體上,數據源MDISSearchDimensions的屬性JoinSource應設置爲MDISAccountSearchTerms。它將使用表格關係,但您需要指定它們已加入。

然後,一旦你從頭文件中設置了CombinationID,你只需要確保線條得到它。在表MDISSearchDimensions上,添加名爲initFromMDISAccountSearchTerms(MDISAccountSearchTerms _MDISAccountSearchTerms)的方法,該方法設置CombinationID並在MDISSearchDimensions.initValue()內調用此方法。

+0

感謝您的回答!我爲CombinationID製作一個數字序列。我使用以下步驟https://community.dynamics.com/gp/b/dynamics101trainingcentergp/archive/2014/09/24/creating-custom-number-sequences-in-microsoft-dynamics-ax-2012 – JamesnxD

+0

當我創建一個系統顯示新消息:「由於CS01-00001尚未保存或刪除,因此無法分配新號碼。」當我打開並關閉窗體或按Ctrl + S時,它工作正常。有沒有辦法自動保存行? – JamesnxD

+0

試試https://dynamicsuser.net/ax/f/developers/84652/solution-to-solve-number-sequence-problem-for-the-error-a-new-number-cannot-be-assigned-because都具有一個 - 不被保存的,或缺失 –

0

您應該禁用第二個數據源的InsertIfEmpty屬性。

所述第二數據源的方法initValue初始化CombinationId字段(提供適當的關係),以主CombinationId數據源值,但現在它這樣做之前,主數據源字段具有一個值。

如果您想離開,您還有其他選擇;手動設置在所述第二數據源的validateWrite

public boolean validateWrite() 
{; 
    MDISAccountDimension.CombinationId = MDISAccountSearchTerms.CombinationId; 
    return super(); 
} 

因此,將不再會由於Mandatory被設置。

您應該在第二個網格中隱藏CombinationId以避免用戶錯誤。

相關問題