ms-access - 访问文本框自定义数字格式
问题描述
我来自孟加拉国,在孟加拉国,逗号 (,) 用作千位分隔符。我们在从右到左的 3 位、5 位、7 位之后使用逗号,例如9,999
, 99,999
, 9,99,999
, 99,99,999
, 9,99,99,999
& 99,99,99,999
。我试图通过文本框格式属性来完成这种格式。当我使用#,##0
as 格式时,它只能格式化到 5 位。当数字为 6 位或更高时,它只显示一个逗号,就像456,456
预期的一样4,56,456
。我曾尝试使用#,##,##,##0
,但它会自动转到#,##0
. 那么,如何格式化文本框以获得我想要的结果,如下所示?
解决方案
你不能。您必须像这样运行自定义格式:
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,正十进制值
- 零
- 大于 -1,负十进制值
- 小于 -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)))), "")
- 第一部分控制标志
- 第二部分控制整数值
- 第三部分控制小数
这将正确输出整个货币范围内的任何值。
推荐阅读
- javascript - DOM 元素上的 JavaScript LTR/RTL 检测
- python - 线性模型可以在卷积或神经网络中训练吗?
- python - 如何使用 python3 和电子邮件库发送带有图像的 HTML 电子邮件?
- php - PHP 函数:通过引用(如果不可能)按值传递变量
- ios - 如何在两个子视图 iOS 之间创建过渡?
- swift - Swift多协议一致性,编译错误
- pandas - pandas groupby + 多个聚合/应用多个列
- azure - Azure API 管理服务中的“JWT 验证失败:JWT 不存在..”
- python - 如何通过创建新数组并保持旧数组不变来更新数组
- prometheus - 如何在使用通配符时获取 prometheus/grafana 中单个指标的速率?