2014-12-03 97 views
1

今天我已經拋出了相當多的情況。基本上,我有一個存放記錄的表格(ProjTransPosting),該表格涉及許多類似結構的表格(ProjCostTrans,ProjRevenueTrans等)。它們與TransId相關,但每個TransId只與子表的數量中的一個相關(即,如果ProjCostTrans中存在137的TransId,則ProjRevenueTrans中不能有137的TransId)。子表的模式是相同的。來自網格中的一列中的多個數據源的數據

所以,我最初的想法是創建一個Map並創建來自各種子表的映射。然後,我會將該Map用作表單中的一個數據源,因此所有內容都可以顯示在一列中。我創建了Map和Children表之間的所有關係以及與父表的關係。我把Map作爲一個數據源放在表單中,這導致了一個空白的Grid,儘管我不知道爲什麼。在任何給定時間,Map對象只能有一種表類型嗎?我認爲這樣做的目的是它可以是通用的,並可作爲許多記錄類型的緩衝區。我想追求這條路線,因爲這絕對會達到我期待的目標。

在失敗了,我被迫安排我的數據源來執行這樣的事情:SELECT ProjTransPosting LEFT JOIN ProjCostTrans LEFT JOIN ProjRevenueTrans ...這個問題是,我附加的每個子表,它創建額外的列,其他列的值全部爲NULL(AX中爲空白)。所以,我有這樣的事情:

Parent.TransId ChildA.Field ChildB.Field ChildC.Field 
1    NULL   1256   NULL 
2    1395   NULL   NULL 
3    NULL   4762   NULL 
4    NULL   NULL   1256 

通常情況下,用戶將處理具有額外的列顯示的煩惱,但他們希望也能夠在所有的孩子表中的字段進行篩選。我上面的例子中,他們希望能夠過濾「1256」,結果將返回TransIds 1和4,但很明顯,因爲這種情況下的值分散在多列中,所以用戶無法完成。

理想情況下,地圖將「合併」這些列爲一個,然後用戶可以輕鬆過濾。關於如何繼續這個的任何想法?

回答

0

這聽起來像AX的確切目的表繼承2012年

http://msdn.microsoft.com/en-us/library/gg881053.aspx

何時使用:

http://msdn.microsoft.com/en-us/library/gg843731.aspx

編輯:這裏添加我的評論讓這個更完整的答案。

比方說,你有三個表TabPetTabPetCatTabPetDog,其中TabPet是父表,其餘的是死者。

如果您將兩條記錄分別插入到TabPetCatTabPetDog(共4個)中,它們都將具有唯一的recIds。假設TabPetCat得到5637144580和5637144581. TabPetDog得到5637144582和5637144583。

如果你打開TabPet,你會看到5637144580,5637144581,5637144582和5637144583.

所以,你會做的是讓你的表ProjTransPosting超類,然後ProjCostTransProjRevenueTrans等後裔表。除非transId確實是必要的,否則您可以擺脫它,只使用RecId

+0

除了表之間沒有RecId鏈接,只是這個TransId。 – codemann8 2014-12-04 14:06:10

+0

是的,但你說你自己在任何表中只有一個'TransId'存在。因此,使用'RecId'並將'TransId'保留在父表中。你的任務是對現有的表格/模式做出這種改變,還是你在控制它的發展? – 2014-12-04 17:47:22

+0

這仍然行不通。 RefRecId只有在與一張表完全相關的情況下才有可能。兩個不同的表可以具有相同的RecId,它不知道哪個表是正確的。 – codemann8 2014-12-08 20:36:04

相關問題