Axapta 网格中一列中来自多个数据源的数据
我今天完全被抛到了这个场景中。本质上,我有一个表(ProjTransPosting)存储记录,该表与许多类似结构的表(ProjCostTrans、ProjRevenueTrans等)相关。它们通过TransId进行关联,但每个TransId将只关联一个子表(这意味着如果ProjCostTrans中存在137个TransId,那么ProjRevenueTrans中就不会有137个TransId)。子表的架构是相同的 因此,我最初的想法是创建一个映射,并从各个子表中创建映射。然后我将使用这个映射作为表单中的数据源,这样所有内容都可以显示在一列中。我创建了映射和子表之间的所有关系以及与父表的关系。我将Map作为数据源放在表单中,这导致了一个空白网格,尽管我不知道为什么。在任何给定的时间,映射对象是否只能由一种表类型的映射?我认为这样做的目的是,它可以是通用的,可以作为许多记录类型的缓冲区。我想走这条路,因为这肯定会实现我的目标 由于失败,我被迫安排数据源执行如下操作:选择ProjTransPosting LEFT JOIN ProjCostTrans LEFT JOIN ProjRevenueTrans。。。问题是,我添加的每个子表都在创建附加列,而其他列的值都为NULL(在AX中为空)。所以我有这样的想法:Axapta 网格中一列中来自多个数据源的数据,axapta,microsoft-dynamics,dynamics-ax-2012,ax,Axapta,Microsoft Dynamics,Dynamics Ax 2012,Ax,我今天完全被抛到了这个场景中。本质上,我有一个表(ProjTransPosting)存储记录,该表与许多类似结构的表(ProjCostTrans、ProjRevenueTrans等)相关。它们通过TransId进行关联,但每个TransId将只关联一个子表(这意味着如果ProjCostTrans中存在137个TransId,那么ProjRevenueTrans中就不会有137个TransId)。子表的架构是相同的 因此,我最初的想法是创建一个映射,并从各个子表中创建映射。然后我将使用这个映射作为
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和TransIds 4,但很明显,由于本例中的值分布在多个列中,用户无法完成这一操作
理想情况下,地图会将这些列“组合”成一列,然后用户可以轻松地对其进行过滤。有没有关于如何进行此操作的想法?尝试创建一个,然后创建一个
映射应该被使用,而不是作为表单中的数据源。这听起来像是AX 2012中表继承的确切目的 何时使用: 编辑:在此处添加我的评论,使之成为更完整的答案 假设您有三个表
TabPet
,TabPetCat
,TabPetDog
,其中TabPet
是超类型表,其他表是死者
如果在TabPetCat
和TabPetDog
中分别插入两条记录(总共4条),则它们都将具有唯一的RecID。假设TabPetCat
得到5637144580和5637144581TabPetDog
获取5637144582和5637144583
如果打开选项卡pet
,您将看到5637144580、5637144581、5637144582和5637144583
因此,您要做的是将表
ProjTransPosting
设为超类型,然后将ProjCostTrans
、projrelenuetrans
等子表。除非确实需要transId
,否则您可以将其去掉,只使用RecId
,除非表之间没有RecId链接,只有这个transId。是的,但您自己说过,任何表中一次只存在1个transId
。因此,使用RecId
并将TransId
保留在父表中。您的任务是对现有表/模式进行此更改,还是控制其开发?这仍然不起作用。只有当RefRecId仅与一个表相关时,才可能使用RefRecId。两个不同的表可以有相同的RecId,它不知道哪个表是正确的。我认为您不完全了解AX 2012的表继承是如何工作的。假设您有三个表TabPet
,TabPetCat
,TabPetDog
,其中TabPet
是超类型表,其他表是死者。如果在TabPetCat
和TabPetDog
中分别插入两条记录(总共4条),则它们都将具有唯一的RecID。假设TabPetCat
得到5637144580和5637144581TabPetDog
获取5637144582和5637144583。如果打开TabPet
,您将看到5637144580、5637144581、5637144582和5637144583。因此,您要做的是将表ProjTransPosting
作为超类型,然后将ProjCostTrans
、projrelenuetrans
等子表。除非确实需要transId
,否则您可以将其去掉,只使用RecId
。我正在用这些注释编辑我的答案,这样你可以更容易地看到格式。