格式函数返回错误的值

时间:2017-05-24 13:55:36

标签: ms-access ms-access-2010

我们在查询中有一个字段,如果它太短,应该用零填充,我们使用Format()函数完成此操作。但是,有些值会产生奇怪的结果。

Format("14425112-8","00000000-00")

返回值“00019330-78”

对于大多数输入,字符串按预期格式化,8位,连字符,两位数。但在少数情况下,该值会被修改。这对其他人来说是否可重复?有人有解释吗?

感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

这是一个尝试过于有用的访问示例。看起来它将这些值解释为日期,但由于您没有使用格式的任何日期指示符,例如:(dd,mm,yyyy),它将1-1转换为日期,然后尝试将其显示为十进制形式:

debug.print Format("1-1","000000-00")

返回000427-36,这是十进制值42736,如果转换为日期,则会变为1/1/2017。这就是将访问解释为“1-1”的原因。

似乎访问已将-字符保留为符号日期格式,尽管their website says。此功能仅用于格式化实际日期或数值,例如价格。如果您使用格式化功能,则必须将分隔符更改为小数点,这显然是唯一可以使用前导零和尾随零点获得所需内容的字符。

否则,您可能需要为此构建自己的函数。

答案 1 :(得分:1)

您不能以这种方式格式化字符串。试试这个:

PaddedNumber = Right(String(8, "0") & "14425112-8", 10)