访问自定义日期/时间格式和输入掩码错误

时间:2016-01-17 00:46:22

标签: date ms-access time format input-mask

我有一个数据库,我需要存储很多次并根据时间进行计算,但是,时间可以是不同的时间,所以只使用时间格式不会计算两者之间的正确差异。为了便于使用,我想限制他们输入的日期,因为有很多次,我不想每次都输入完整的日期。我创建了以下自定义格式:16-Jan 15:00(d-mmm h:nn)

我还创建了一个自定义输入掩码:90-LLL \ 90:00

我的表单字段具有相同的格式和输入掩码。该字段的初始输入工作正常,当我尝试编辑字段并更改一位数时,问题就出现了。它弹出的错误是它与输入掩码不匹配,即使它确实如此。为了更改字段,我必须删除所有内容,从文本框中删除焦点,然后单击返回。无论如何要修复它吗?或者是否有其他选项来计算时间之间的差异,而不必使用超过24小时的日期(不超过48)

1 个答案:

答案 0 :(得分:0)

是的,您可以设置一个复选框 NextDay ,以标记结束时间是否为第二天。

然后你的时间跨度将是:

Dim Timespan As Date
Timespan = CDate([EndTime] - [StartTime] + Abs([NextDay]))

要输入时间,您可以使用此处的方法:Entering 24-hour time

要格式化和显示您的时间跨度,对于超过24小时的值,请使用如下函数:

Public Function FormatHourMinute( _
  ByVal datTime As Date, _
  Optional ByVal strSeparator As String = ":") _
  As String

' Returns count of days, hours and minutes of datTime
' converted to hours and minutes as a formatted string
' with an optional choice of time separator.
'
' Example:
'   datTime: #10:03# + #20:01#
'   returns: 30:04
'
' 2005-02-05. Cactus Data ApS, CPH.

  Dim strHour       As String
  Dim strMinute     As String
  Dim strHourMinute As String

  strHour = CStr(Fix(datTime) * 24 + Hour(datTime))
  ' Add leading zero to minute count when needed.
  strMinute = Right("0" & CStr(Minute(datTime)), 2)
  strHourMinute = strHour & strSeparator & strMinute

  FormatHourMinute = strHourMinute

End Function