如何强制绑定文本框中输入的Date/Time
值包含日期组件和时间组件(换句话说是完整时间戳)?
更新(澄清):该列是用户输入的时间戳,因此缺少日期或缺少时间是没有意义的。
答案 0 :(得分:2)
如果你真的想这样做,那么你可以使用,例如:
创建一个输入掩码00/00/0000\ 00:00:00;0;_
一旦他们开始输入,它将坚持输入所有数字。然后仍然可以按Esc放弃字段编辑。
我不是输入掩码的忠实粉丝 - 尤其是日期,因为它迫使用户使用他们可能不太习惯的格式。
如果您还使用Format属性,请在使用输入掩码时小心;如果它们不匹配则可能很麻烦。
我还建议如果你有这种数据输入的不同形式,那么一致地使用相同的掩码。
答案 1 :(得分:2)
文本框绑定到日期/时间字段。日期/时间值始终包括日期和时间组件。如果用户未提供日期组件,则日期将为第0天(1899年12月30日)。如果用户没有提供时间组件,则时间为午夜(00:00:00)。
如果1899年12月30日超出了您需要容纳的日期值范围,则很容易要求用户输入(非零)日期。
查看此立即窗口会话是否有助于澄清情况。
? #07:00#
7:00:00 AM
? Format(#07:00#, "yyyy-m-d hh:nn:ss")
1899-12-30 07:00:00
? DateValue(#07:00#) = CDate(0)
True
您可以使用更新前的文本框来检查DateValue(Me.TextBoxName) = CDate(0)
如果该表达式为True
,则向用户显示通知并Cancel
更新。
符合时间要求......
? #2013-7-31#
7/31/2013
? Format(#2013-7-31#, "yyyy-m-d hh:nn:ss")
2013-7-31 00:00:00
? TimeValue(#2013-7-31#) = CDate(0)
True
逻辑类似于日期片段,复杂的是午夜可能是可接受的时间值。如果是这样的话,我看不出如何区分用户因没有输入时间值而进入午夜和午夜。也许最好的选择是要求用户确认午夜时间。