【发布时间】:2013-03-17 15:54:27
【问题描述】:
我有一个 1 或 2 个字符长的 text 列,其中仅包含 0 到 99 之间的数字。
当它只是一个数字字符时,我用什么(文本)格式来显示它并带有 0 前缀? 这意味着“8”显示为“08”,而 23 保持不变“23”。
当字段是数字而不是文本时,我知道该怎么做。我需要做的就是在这个数字列的格式字段中输入 00。现在我想在字段是文本时做同样的事情。谢谢。
【问题讨论】:
标签: ms-access formatting
我有一个 1 或 2 个字符长的 text 列,其中仅包含 0 到 99 之间的数字。
当它只是一个数字字符时,我用什么(文本)格式来显示它并带有 0 前缀? 这意味着“8”显示为“08”,而 23 保持不变“23”。
当字段是数字而不是文本时,我知道该怎么做。我需要做的就是在这个数字列的格式字段中输入 00。现在我想在字段是文本时做同样的事情。谢谢。
【问题讨论】:
标签: ms-access formatting
=Right("00" & someString,2)
这么简单的事情不需要 VBA。
如果字段是数字,您可以使用类似“00”的格式。用字符串,用纯格式,恐怕没办法。
【讨论】:
如果将值转换为数值,则可以使用 TextBox 的文本格式规范。在TextBox 的ControlSource 中写:
=CLng(fieldName)
如果您的字段可以是Null,这将产生错误,您必须这样做:
=IIf(IsNull(fieldName), Null, CLng(Nz(fieldName)))
Nz 仍然是必需的,因为 VBA 始终评估 IIf 的所有三个参数。
或者如果你想在字段为Null的情况下显示“00”,只需这样做:
=CLng(Nz(fieldName))
当你在 TextBoxes 或其他 Controls 中使用此类表达式时,请确保 Control 的名称与源列的名称不同;否则你会得到一个产生错误的无限递归。例如。如果列名为“MyColumn”,则为 TextBox 命名为“txtMyColumn”。
【讨论】:
从类似的问题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)
【讨论】: