如何在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) 

REF :需要这样http://support.microsoft.com/kb/210573

+0

我投了票,因为这是另一种方式来做我想做的事。但是,我的问题是如何使用文本格式规范来做到这一点。谢谢。 – user776676 2013-03-17 16:18:39

+0

够公平的。当然,如果这是一个报告,那么您总是可以使用其中一种建议的技术(来自@iDevlop的技术尤其优雅)来输出底层查询中的格式化文本。这样你就不必在报告中摆弄格式规范。 – 2013-03-17 19:17:14

如果将值转换为数字值,则可以使用TextBox的文本格式规范。在TextBox写的ControlSource

=CLng(fieldName) 

如果你的领域可以Null这将产生一个错误,你将不得不这样做:

=IIf(IsNull(fieldName), Null, CLng(Nz(fieldName))) 

Nz仍然是必需的,VBA始终评估IIf的所有三个参数。

或者,如果你想显示“00”,如果该字段为Null,只要做到这一点:

=CLng(Nz(fieldName)) 

当您使用文本框或其他控件这样的表达,确保名该控件与源列的名称不同;否则你会得到一个产生错误的无限递归。例如。如果列名是“MyColumn”,则给TextBox一个名称,如“txtMyColumn”。

+0

有效,除非他想出于某种原因保留表达式作为字符串。 – 2013-03-17 16:32:36