![](/img/trans.png)
[英]How to see the SQL expression of an X++ select statement Pre Ax2012?
[英]How do I evaluate a boolean expression given as a String in X++ [AX 2012]
我有一個場景,我想評估一個以字符串形式給出的布爾表達式。
例如,“1==4”在傳遞給某個函數時會評估為/返回 FALSE。
類似地,“1==1”在傳遞給同一個函數時將評估為 TRUE。
如果可以這樣做,那么我肯定會想要某種方式來評估動態布爾表達式。 例如,“workHours==4”是字符串表達式,workHours 是一個變量。
如果您知道,請告訴我任何解決方案。 謝謝。
有多種方法可以通過 .NET(例如,使用 XLNT 框架)和 X++ 中的一些內部函數從文本中評估 X++ 表達式。 但是我很確定您可以通過更干凈的方法獲得相同的解決方案。 例如,您可以將一個容器傳遞給一個函數,然后比較它們的值,或類似的東西。
如果您仍然想這樣做,請查看 X++ 中的runbuf
函數。
自學答案:
這是代碼示例,您可以如何操作。
static void Job22(Args _args)
{
str expr = 'ab==2';
str method = @'boolean eval(int ab){return ' + expr + ';}';
boolean result;
;
result = runBuf(method, 5);
info (strfmt("Calculation result is %1", result));
}
這可能是您使用的更好示例,您可以輕松地更改expression
。
static void RunBufExample()
{
str expression = '2==1';
str func = 'boolean myFunc() {return ' + expression + ';}';
boolean retVal;
new ExecutePermission().assert();
retVal = runBuf(func);
CodeAccessPermission::revertAssert();
info(strFmt("%1", retVal));
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.