在MS Access文本框中需要日期和时间

时间:2013-07-29 20:05:14

标签: ms-access datetime ms-access-2007

如何强制绑定文本框中输入的Date/Time值包含日期组件和时间组件(换句话说是完整时间戳)?

更新(澄清):该列是用户输入的时间戳,因此缺少日期或缺少时间是没有意义的。

2 个答案:

答案 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

逻辑类似于日期片段,复杂的是午夜可能是可接受的时间值。如果是这样的话,我看不出如何区分用户因没有输入时间值而进入午夜和午夜。也许最好的选择是要求用户确认午夜时间。