在Axapta/Dynamics Ax中对链接表进行筛选
我在Axapta/Dynamics Ax(EmplTable)中有一个表单,它有两个数据源(EmplTable和HRMVirtualNetworkTable),其中第二个数据源(HRMVirtualNetworkTable)链接到具有“延迟”链接类型的第一个on在Axapta/Dynamics Ax中对链接表进行筛选,axapta,Axapta,我在Axapta/Dynamics Ax(EmplTable)中有一个表单,它有两个数据源(EmplTable和HRMVirtualNetworkTable),其中第二个数据源(HRMVirtualNetworkTable)链接到具有“延迟”链接类型的第一个on 有没有一种方法可以基于第二个数据源在记录上设置一个过滤器,而不必将链接类型更改为“InnerJoin”您可以通过加入QueryBuildDataSource或通过扩展过滤器(Alt+F3,右键单击datasorce,1:n并查找七个辅助
有没有一种方法可以基于第二个数据源在记录上设置一个过滤器,而不必将链接类型更改为“InnerJoin”您可以通过加入QueryBuildDataSource或通过扩展过滤器(Alt+F3,右键单击datasorce,1:n并查找七个辅助DS)来编程设置过滤器。您可以使用“外部连接”而不是“延迟连接”然后,在HRMVirtualNetworkTable上搜索字段时,通过编程更改联接模式 将此方法添加到SysQuery类:
static void updateJoinMode(QueryBuildDataSource qds)
{
Counter r;
if (qds)
{
qds.joinMode(JoinMode::OuterJoin);
for (r = 1; r <= qds.rangeCount(); r++)
{
if (qds.range(r).value() && qds.range(r).status() == RangeStatus::Open)
{
qds.joinMode(JoinMode::InnerJoin);
break;
}
}
}
}
有时,this.queryRun()返回null,因此请改用this.query()
更新:
请注意,上述内容与AX 2012及更高版本无关,您可以在外部联接中使用查询筛选器。看
public void executeQuery()
{;
SysQuery::updateJoinMode(this.queryRun() ? this.queryRun().query().dataSourceTable(tableNum(HRMVirtualNetworkTable)) : this.query().dataSourceTable(tableNum(HRMVirtualNetworkTable)));
super();
}