首页 > 解决方案 > 访问文本框自定义数字格式

问题描述

我来自孟加拉国,在孟加拉国,逗号 (,) 用作千位分隔符。我们在从右到左的 3 位、5 位、7 位之后使用逗号,例如9,999, 99,999, 9,99,999, 99,99,999, 9,99,99,999& 99,99,99,999。我试图通过文本框格式属性来完成这种格式。当我使用#,##0as 格式时,它只能格式化到 5 位。当数字为 6 位或更高时,它只显示一个逗号,就像456,456预期的一样4,56,456。我曾尝试使用#,##,##,##0,但它会自动转到#,##0. 那么,如何格式化文本框以获得我想要的结果,如下所示?

在此处输入图像描述

在此处输入图像描述

标签: ms-access

解决方案


你不能。您必须像这样运行自定义格式:

TextValue = Format(Fix(Value), Left("##\,##\,##\,##\,##\,##\,", -Int(-(Len(Abs(Fix(Value))) - 2) \ 2) * 4) & "##0")

请注意,负值也将被正确格式化,而小数将被截断。

如果您有小数,请附加这些:

TextValue = Format(Fix(Value), Left("##\,##\,##\,##\,##\,##\,", -Int(-(Len(Abs(Fix(Value))) - 2) \ 2) * 4) & "##0") & LTrim(Str(Abs(CCur(Value)-Fix(Value))))

在表单或报告中用作ControlSource(只读):

=Format(Fix([Amount]),Left("##\,##\,##\,##\,##\,##\,",-Int(-(Len(Abs(Fix([Amount])))-2)\2)*4) & "##0")

附录

用值覆盖任何情况:

  1. 大于 1,带或不带小数
  2. 小于 1,正十进制值
  3. 大于 -1,负十进制值
  4. 小于 -1,带或不带小数

需要一个扩展表达式:

TextValue = Format(Value, ";-") & _
    Format(Abs(Fix(Value)), Left("##\,##\,##\,##\,##\,##\,", -Int(-(Len(CStr(Abs(Fix(Value)))) - 2) \ 2) * 4) & "##0") & _
    IIf(Value - Fix(Value), LTrim(Str(Abs(Value - Fix(Value)))), "")
  1. 第一部分控制标志
  2. 第二部分控制整数值
  3. 第三部分控制小数

这将正确输出整个货币范围内的任何值。


推荐阅读