MS Access中hh:nn时间格式自动转为h:nn的原因及解决方法问询
问题原因
Access窗体中文本框的格式属性仅控制控件未获得焦点时的展示规则,未配置输入限制的前提下,用户输入的内容会先被解析为原生时间值存储,原生时间值本身不携带格式信息。当控件失去焦点后,若没有额外的格式强制规则,Access会默认调用系统短时间格式渲染时间值,个位数小时的前导零会被自动省略,就会出现你设置的hh:nn格式被覆盖为h:nn的情况。如果控件绑定了表字段,若表字段本身未设置固定时间格式,也会优先继承字段的默认格式规则,覆盖你单独给控件设置的格式。
解决方法
- 方法1:同时配置格式和输入掩码
保留文本框Format属性为hh:nn,同时将输入掩码属性设置为00:00;0;_。该掩码会强制要求输入两位小时、两位分钟,所有输入的时间都会保留前导零,失焦后不会被自动格式化省略前导零。 - 方法2:修改绑定表字段的格式规则
如果该文本框绑定了数据源表的时间字段,打开表的设计视图,选中对应时间字段,将其格式属性设置为hh:nn,所有绑定该字段的窗体控件都会默认继承该格式,不会被系统默认规则覆盖。 - 方法3:用更新事件强制格式化
不想使用输入掩码的前提下,可以给文本框的AfterUpdate事件添加VBA代码:
每次用户完成输入离开控件时,都会自动将时间强制格式化为两位小时的样式。Me.文本框名称 = Format(Me.文本框名称, "hh:nn")
内容的提问来源于stack exchange,提问作者L Kadue
相关产品推荐
相关产品推荐

