评估文本到十进制问题 (EVALUATE Navision)

Evaluate Text to Decimal Issue (EVALUATE Navision)

我在尝试将文本计算为十进制时遇到问题。 首先,我正在提取 ;来自 NAV 字段的符号(该字段的类型为文本)

My field value is: 9 469;2 178;0;-1 000;0;0;0;37 994,96;1 000;0;0;0;493,4;0;0;0;

解压时变成:

Example: 
9 469
2 178
-1 000
etc..

提取后,我需要将文本转换为小数,即:

CodeConvert := '9 469'

EVALUATE(Primo,DELCHR(CodeConvert,'=',' '));

但是在进行评估时,我收到一条错误消息:

Microsoft Dynamics NAV

The value "9 469" can't be evaluated into type Decimal.

--------------------------- OK

我试过了,在 NAV 2009、2013、2015 和 2016 中运行良好,这是我的代码:

CodeConvert := '9 469;2 178;0;-1 000;0;0;0;37 994,96;1 000;0;0;0;493,4;0;0;0;';
CodeConvert := COPYSTR(CodeConvert, 1, 5);
EVALUATE(Primo, DELCHR(CodeConvert, '=', ' '));
MESSAGE(FORMAT(Primo));

试试这段代码并使用调试器逐步查看:

CodeConvert := '9 469;2 178;0;-1 000;0;0;0;37 994,96;1 000;0;0;0;493,4;0;0;0;';
CodeConvert := COPYSTR(CodeConvert, 1, 5);
CodeConvert := DELCHR(CodeConvert, '=', ' '); //here your breakpoint
EVALUATE(Primo, CodeConvert);
MESSAGE(FORMAT(Primo));

如您所见,EVALUATE 函数在“9 469”值处中断。

但是 DELCHR 应该在调用 EVALUATE 之前删除 space。

只是说明你的value和delchar中的space个符号不一样

Select 并将符号从“9 469”复制粘贴到 DELCHAR.

中的第三个参数

我找到了这个问题。实际上,NAV 在小数点的 space 中插入了一个特殊字符。如果您曾经使用过 delchr,并且在视觉上它是一个 space ' ',并且它没有删除。

那么你最好的朋友就是记事本了。在记事本上提取值,然后将该间距“”复制并粘贴到您的 delchr 函数中。结论是,添加的不是 space 而是一个特殊字符,因为视觉上它显示为 space,第一印象是它是 space :)

我就是这样工作的!