【问题标题】:How to specify a custom format for a text pattern in Microsoft Access?如何在 Microsoft Access 中为文本模式指定自定义格式?
【发布时间】:2013-03-17 15:54:27
【问题描述】:

我有一个 1 或 2 个字符长的 text 列,其中仅包含 0 到 99 之间的数字。

当它只是一个数字字符时,我用什么(文本)格式来显示它并带有 0 前缀? 这意味着“8”显示为“08”,而 23 保持不变“23”。

当字段是数字而不是文本时,我知道该怎么做。我需要做的就是在这个数字列的格式字段中输入 00。现在我想在字段是文本时做同样的事情。谢谢。

【问题讨论】:

    标签: ms-access formatting


    【解决方案1】:
    =Right("00" & someString,2)
    

    这么简单的事情不需要 VBA。
    如果字段是数字,您可以使用类似“00”的格式。用字符串,用纯格式,恐怕没办法。

    【讨论】:

      【解决方案2】:

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

      =CLng(fieldName)
      

      如果您的字段可以是Null,这将产生错误,您必须这样做:

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

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

      或者如果你想在字段为Null的情况下显示“00”,只需这样做:

      =CLng(Nz(fieldName))
      

      当你在 TextBoxes 或其他 Controls 中使用此类表达式时,请确保 Control 的名称与源列的名称不同;否则你会得到一个产生错误的无限递归。例如。如果列名为“MyColumn”,则为 TextBox 命名为“txtMyColumn”。

      【讨论】:

      • 有效,除非他出于某种原因想将表达式保留为字符串。
      【解决方案3】:

      从类似的问题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)
      

      参考:http://support.microsoft.com/kb/210573

      【讨论】:

      • 我投了赞成票,因为这是做我想做的另一种方式。但是,我的问题是关于如何使用文本格式规范来做到这一点。谢谢。
      • 很公平。当然,如果这是针对报告的,那么您总是可以使用其中一种建议的技术(来自@iDevlop 的技术特别优雅)在基础查询中输出格式化文本。这样您就不必在报告本身中摆弄格式规范。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多