Axapta AOT查询关系或大小写

Axapta AOT查询关系或大小写,axapta,x++,dynamics-ax-2012,Axapta,X++,Dynamics Ax 2012,例如,我有下面的x++查询 Select EcoResproduct join tableX where EcoResproduct.RecId == tableX.Product || EcoResproduct.RecId == tableX.DistinctProductVariant; 是否可以通过AOT query执行相同的操作,而无需使用联合查询或添加两次相同的数据源,也无需使用QueryBuildDataSource对象和X++ 提前谢谢

例如,我有下面的x++查询

Select EcoResproduct
   join tableX
       where EcoResproduct.RecId == tableX.Product
          || EcoResproduct.RecId == tableX.DistinctProductVariant;
是否可以通过AOT query执行相同的操作,而无需使用联合查询或添加两次相同的数据源,也无需使用QueryBuildDataSource对象和X++

提前谢谢


PS:我把问题说得更清楚了。

最初的错误答案:

Query q = new Query();
QueryBuildDataSource qbds1 = q.addDataSource(tableNum(EcoResproduct));
QueryBuildDataSource qbds2 = qbds1.addDataSource(tableNum(TableX));

qbds2.addrange(fieldNum(TableX, RecId)).value(strFmt('((%2.Product == %1.RecId) || (%2.DistinctProductVariant == %1.RecId))', qbds1.name(), qbds2.name()));

info(qbds1.toString());
是否可以通过AOT查询执行相同的操作,而不使用联合查询或添加两次相同的数据源

没有

正确答案,感谢评论:

Query q = new Query();
QueryBuildDataSource qbds1 = q.addDataSource(tableNum(EcoResproduct));
QueryBuildDataSource qbds2 = qbds1.addDataSource(tableNum(TableX));

qbds2.addrange(fieldNum(TableX, RecId)).value(strFmt('((%2.Product == %1.RecId) || (%2.DistinctProductVariant == %1.RecId))', qbds1.name(), qbds2.name()));

info(qbds1.toString());

初始错误答案:

Query q = new Query();
QueryBuildDataSource qbds1 = q.addDataSource(tableNum(EcoResproduct));
QueryBuildDataSource qbds2 = qbds1.addDataSource(tableNum(TableX));

qbds2.addrange(fieldNum(TableX, RecId)).value(strFmt('((%2.Product == %1.RecId) || (%2.DistinctProductVariant == %1.RecId))', qbds1.name(), qbds2.name()));

info(qbds1.toString());
是否可以通过AOT查询执行相同的操作,而不使用联合查询或添加两次相同的数据源

没有

正确答案,感谢评论:

Query q = new Query();
QueryBuildDataSource qbds1 = q.addDataSource(tableNum(EcoResproduct));
QueryBuildDataSource qbds2 = qbds1.addDataSource(tableNum(TableX));

qbds2.addrange(fieldNum(TableX, RecId)).value(strFmt('((%2.Product == %1.RecId) || (%2.DistinctProductVariant == %1.RecId))', qbds1.name(), qbds2.name()));

info(qbds1.toString());

我同意这是正确的答案,但为了好玩,可能有一种方法可以通过查询范围中的表达式来破解它@nikos Kou需要在一段时间内修改语法,但这是可能的。但它看起来从来都不漂亮。我看不出我如何处理范围,因为两个表之间是“或”关系。使用
((Product==EcoResproduct.RecId)| |(DistinctProductVariant==EcoResproduct.RecId))
作为tableX数据源中的范围值。@JanB.Kjeldsen,你说得对,出于某种原因,我决定这将适用于范围,但不适用于联接。。。我建议您下次创建一个新的、正确的答案,而不是在评论中提供一个正确的答案,因为这对那些将来可能会寻找类似解决方案的人来说并不友好。@JanB.Kjeldsen如果您通过X++构建查询,这是可行的,我只想在通过AOT而不是通过X++构建查询时做同样的事情。我同意这是正确的答案,但为了好玩,可能有一种方法可以通过查询范围中的表达式来破解它@nikos Kou需要在一段时间内修改语法,但这是可能的。但它看起来从来都不漂亮。我看不出我如何处理范围,因为两个表之间是“或”关系。使用
((Product==EcoResproduct.RecId)| |(DistinctProductVariant==EcoResproduct.RecId))
作为tableX数据源中的范围值。@JanB.Kjeldsen,你说得对,出于某种原因,我决定这将适用于范围,但不适用于联接。。。我建议您下次创建一个新的、正确的答案,而不是在评论中提供一个正确的答案,因为这对那些将来可能会寻找类似解决方案的人来说并不友好。@JanB.Kjeldsen如果您通过X++构建查询,这是可行的,我只希望通过AOT而不是通过X构建查询++