Microsoft Dynamics AX 2012 AIF QueryCriteria中的布尔AND逻辑

时间:2013-03-27 11:24:41

标签: x++ dynamics-ax-2012 axapta

根据documentation

  

系统使用布尔OR逻辑连接所有标签。

这是否意味着完全不可能构造一个在多个CriteriaElements之间执行布尔AND运算的QueryCriteria?

1 个答案:

答案 0 :(得分:5)

你应该能够通过查询使用“脏技巧”来获得你想要的东西。 通过使用DataArea字段或RecId字段并放入表达式,可以将自定义表达式放在查询范围中。

示例:

query = new Query();
dsInventTable = query.addDataSource(tableNum(InventTable));

// Add our range
queryBuildRange = dsInventTable.addRange(fieldNum(InventTable, DataAreaId));

queryBuildRange.value(strFmt('((%1 == %2) || ((%1 == %3) && (%4 == "%5")))',
    fieldStr(InventTable, ItemType),
    any2int(ItemType::Service),
    any2int(ItemType::Item),
    fieldStr(InventTable, ProjCategoryId),
    queryValue("Spares")));

有关详细信息,请参阅以下链接:Expressions in query ranges