【问题标题】:Access custom date/time format and input mask error访问自定义日期/时间格式和输入掩码错误
【发布时间】:2016-04-22 09:24:54
【问题描述】:

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

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

我的表单字段具有相同的格式和要匹配的输入掩码。该字段的初始输入工作正常,当我尝试编辑字段并更改一位数字时出现问题。它弹出与输入掩码不匹配的错误,即使它匹配。为了更改该字段,我必须删除所有内容,从文本框中删除焦点,然后重新单击。有没有办法解决这个问题?或者是否有另一种选择来计算时间之间的差异,而不必使用可能超过 24 小时的日期(不过不超过 48 小时)

【问题讨论】:

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


    【解决方案1】:

    是的,您可以有一个复选框,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
    

    【讨论】:

    • 如果他们必须在第二天选择,那有点违背了目的,它不会节省他们任何时间。而且在某些情况下,甚至可能是 3 天,如果第一天开始晚到第三天。
    • 嗯,是你写的虽然不超过48,我们怎么知道呢?如果时间跨度可以涵盖三天,您只需包含日期,或将复选框替换为 +Days 文本框,允许输入从 0 到任何值。
    猜你喜欢
    • 1970-01-01
    • 2022-11-20
    • 2020-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多