如何在Microsoft Access中为文本模式指定自定义格式?
我有一个文本列,它是1或2个字符只包含从0到99如何在Microsoft Access中为文本模式指定自定义格式?
什么(文本)格式的数字做我用一个0字头,以显示它时,它只有一个数字字符? 这意味着'8'显示为'08',而23保持不变'23'。
我知道如何做到这一点当字段是数字而不是文字。我需要做的就是把00放在这个数字列的格式字段中。现在我想在字段为文本时做同样的事情。谢谢。
=Right("00" & someString,2)
没有VBA一件简单的事情。
如果该字段是数字,则可以使用类似“00”的格式。用一个字符串,使用纯粹的格式,恐怕没办法。
从一个类似的问题here,创建以下VBA函数:
Function Lpad (MyValue as String, MyPadCharacter as String, _
MyPaddedLength as Integer)
Lpad = string(MyPaddedLength - Len(MyValue),MyPadCharacter) _
& MyValue
End Function
要测试此函数,键入在立即窗口下面的行,然后按ENTER键:
?Lpad("123B","0",6)
如果将值转换为数字值,则可以使用TextBox
的文本格式规范。在TextBox
写的ControlSource
:
=CLng(fieldName)
如果你的领域可以Null
这将产生一个错误,你将不得不这样做:
=IIf(IsNull(fieldName), Null, CLng(Nz(fieldName)))
的Nz
仍然是必需的,VBA始终评估IIf
的所有三个参数。
或者,如果你想显示“00”,如果该字段为Null
,只要做到这一点:
=CLng(Nz(fieldName))
当您使用文本框或其他控件这样的表达,确保名该控件与源列的名称不同;否则你会得到一个产生错误的无限递归。例如。如果列名是“MyColumn”,则给TextBox一个名称,如“txtMyColumn”。
有效,除非他想出于某种原因保留表达式作为字符串。 – 2013-03-17 16:32:36
我投了票,因为这是另一种方式来做我想做的事。但是,我的问题是如何使用文本格式规范来做到这一点。谢谢。 – user776676 2013-03-17 16:18:39
够公平的。当然,如果这是一个报告,那么您总是可以使用其中一种建议的技术(来自@iDevlop的技术尤其优雅)来输出底层查询中的格式化文本。这样你就不必在报告中摆弄格式规范。 – 2013-03-17 19:17:14