从数字字段中删除逗号和小数位

Remove commas and decimal places from number field

我正在尝试在不更改涉及的实际值的情况下在字段前添加两个零占位符。该字段是从 MOM 中提取的订单号。所以现在字段的公式是 {cms.ORDERNO}.

当我尝试 '00'+{cms.ORDERNO} 时,字段显示 001,254.00。如何删除小数点和逗号以便显示 001254?

您肯定想为此多次使用替换公式。下面的公式将 ORDERNO 转换为字符串,删除所有逗号和尾随小数位,然后在开头添加两个零:

`00` + REPLACE(REPLACE(CSTR({cms.ORDERNO}),".00",""),",","")

例如,如果 cms.ORDERNO1,254.00,则此公式的输出将是 001254

通常的技巧是在左边填充大量额外的数字,然后只从右边取你真正想要的六个。这将处理从 1 到 999999 的任何订单号。

right("000000" + totext({cms.ORDERNO}, "0"), 6)

当您不指定格式字符串时,如您所试,它会使用通常来自 Windows 的默认设置。顺便说一下,如果我没记错的话 cstr()totext() 大部分是等价的,但是 totext() 有更多的选择。

您还应该能够将“000000”指定为格式字符串以生成左侧填充的零。遗憾的是,我没有安装 Crystal 报告,或者我会检查一下以确保您的安全。如果是这种情况,那么如果您只想对 canvas 上的字段使用格式设置选项,则可能不需要公式。如果您确实使用公式,它仍然很简单。

totext({cms.ORDERNO}, "000000")

我知道这是旧的,但存在更好的解决方案,我 运行 也遇到过同样的问题。 ToText 内置了您需要的内容。

"00" + ToText({cms.ORDERNO}, 0, "")

来自 Crystal 文档:

ToText (x, y, z)

x is a Number or Currency value to be converted into a text string; it can be a whole or fractional value.

y is a whole number indicating the number of decimal places to carry the value in x to (This argument is optional.).

z is a single character text string indicating the character to be used to separate thousands in x. Default is the character specified in your International or Regional settings control panel. (This argument is optional.)