评估文本到十进制问题 (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 :)
我就是这样工作的!
我在尝试将文本计算为十进制时遇到问题。 首先,我正在提取 ;来自 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 :)
我就是这样工作的!