Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Axapta 用于多个子数据源的Dynamics AX record.joinChild()_Axapta_X++_Microsoft Dynamics_Ax - Fatal编程技术网

Axapta 用于多个子数据源的Dynamics AX record.joinChild()

Axapta 用于多个子数据源的Dynamics AX record.joinChild(),axapta,x++,microsoft-dynamics,ax,Axapta,X++,Microsoft Dynamics,Ax,多年来,我一直在想这个问题,并看到有人在上面贴出问题,但从未找到答案 假设您有一个包含数据源a、B和C的表单。“a”将充当父级,“B”和“C”都连接到“a”作为内部连接。现在,我在modifiedField()方法中有了A的表对象的逻辑。在该方法中,您应该能够使用此.joinChild()访问相关数据。但是,由于有多个子数据源,它将选择哪一个子数据源?还有,如何访问它不会自动拾取的对象 我发现有一个this.datasource(),但我在其中没有看到任何方法似乎可以访问其他数据源。由于不带任何

多年来,我一直在想这个问题,并看到有人在上面贴出问题,但从未找到答案

假设您有一个包含数据源a、B和C的表单。“a”将充当父级,“B”和“C”都连接到“a”作为内部连接。现在,我在modifiedField()方法中有了A的表对象的逻辑。在该方法中,您应该能够使用此.joinChild()访问相关数据。但是,由于有多个子数据源,它将选择哪一个子数据源?还有,如何访问它不会自动拾取的对象

我发现有一个this.datasource(),但我在其中没有看到任何方法似乎可以访问其他数据源。

由于不带任何参数,您必须重新排列数据源,使其只有一个子项,如此问题中所示:。这可以在AX 2012中通过直接使用第三个参数将C链接到A来实现。然后可以使用
A.joinChild().joinChild()
引用C

或者,您必须将逻辑移到可以直接引用记录的表单中


modifiedField
方法中使用
joinChild
,肯定会出现问题,因为您无法确定字段是否在联接的上下文中被修改

我认为这是one2many,因为您只能有一个。那么,我可以在modifiedField中检查.dataSource()是否为null,以确定它是否来自表单吗?请注意,此表“A”是一个自定义表,它是一个设置表,只有一个表单可以编辑该数据。测试null是一个好主意(但很详细)。
FormDataSource fds=this.datasource()
FormDataSource cds=fds?fds.joinChild():null
YourTable t=cds?cursor():null
ret=t&&t.check(此)