格式函数返回错误的值

问题描述:

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

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

返回值 “00019330-78”

对于大多数的投入,一如预期,8位数字,连字符,两个数字的字符串被格式化。但在少数情况下,价值被修改。这对其他人是否可重复?有没有人有解释?

感谢您的帮助。

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

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

回报000427-36这是十进制值42736,如果您转换为日期,成为1/1/2017。这是什么访问解释为“1-1”。

似乎访问已经保留了-字符作为象征日期格式,尽管如此their website says。此功能仅用于格式化实际日期或数字值(如价格)。如果您使用格式化功能,您必须将分隔符更改为小数点,这显然是唯一能够为您提供所需的前导零和尾随零的字符。

否则,您可能必须为此创建自己的功能。

+0

谢谢,夸克。这是宝贵的见解。 – Greenspark

你不能像这样用数字格式化字符串。试试这个:

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

感谢您的信息,这是一个有趣的方式填充左零。但我真的希望了解格式函数为什么在这方面失败了,而不仅仅是“你不能这样做”。 – Greenspark

+0

格式化功能不会“失败”。只是你不能将字符串格式化,就好像它们是数字一样。所以要么干净的字符串处理,要么将字符串转换为数字,然后根据需要对其进行格式化。 – Gustav