AX 2009:枚举解析枚举值逗号的报告范围?

时间:2012-04-02 19:12:15

标签: axapta dynamics-ax-2009

我想我可能在AX 2009上发现了一个有趣的错误,我不确定如何继续。

我正在尝试撰写新报告,并根据LedgerTrans表的过帐字段过滤此报告的其中一个条件。但是,似乎在执行报告时,将解析枚举Purchase, receipt的标签而不考虑引号。这通常不会有问题,但本例中的枚举标签包含逗号。结果是,在运行时,查询对话框显示为:Purchase, consumption, __ILLEGAL_VALUE__.即使我使用枚举值或名称,我也会得到此结果。报告必须保持交互状态,但必须锁定此字段,因此我们无法让用户在运行时调整查询。

此时我不想更改标签本身,但如果这是解决这个问题的唯一方法,我会的。有没有其他人遇到这个,或者知道我们如何克服它?

2 个答案:

答案 0 :(得分:2)

我之前遇到过这种情况。有时可接受的选项是将条件值硬编码为OR语句,而不是逗号分隔列表:

((LedgerTrans.Posting == LedgerPostingType::PurchReceipt) || (LedgerTrans.Posting == LedgerPostingType::PurchConsump))

可以输入范围过滤器框,也可以通过x ++代码设置为范围值:

ledgerPostingRange.value("((LedgerTrans.Posting == LedgerPostingType::PurchReceipt) ||
                           (LedgerTrans.Posting == LedgerPostingType::PurchConsump))");

AX不会尝试将这些转换为标签,因此它们会保留为不同的值,而不是呈现为标签。请注意,需要使用括号才能正确解析它。

由于 ILLEGAL_VALUE 即使在尝试使用标签中包含逗号的单个值时也会出现,因此可以对单个值执行相同操作:

ledgerPostingRange.value("(LedgerTrans.Posting == LedgerPostingType::PurchReceipt)");

答案 1 :(得分:0)

我肯定会改变标签!但作为一种解决方法,您可以使用枚举值的数字。

如果经常查询该字段,您可以将该字段放在对话框中,然后更改查询:

 ledgerPostingRange.value(ledgerPostingType ? int2str(ledgerPostingType) : '');