1

我正在使用一个 Access 数据库,其中有一个包含多个日期输入字段的表单。我有一个新用户习惯于使用句点作为日期的分隔符,因此他们输入的是“6.22.11”而不是“6/22/11”或“6-22-11”。我想继续允许这种类型的条目,但 Access 将“6.22.11”转换为时间而不是日期。我尝试在没有帮助的情况下将文本框上的格式设置为“短日期”。我也尝试将代码添加到“失去焦点”事件中,但由于 Access 已经完成了转换,所以为时已晚。“更新前”事件在转换之前触发,但不允许我更改文本框中的文本。关于如何允许所有三种形式的日期输入的任何想法?

4

5 回答 5

1

你上面的例子

Private Sub Texto0_KeyPress(KeyAscii As Integer)
    If Chr(KeyAscii) = "." Then
        KeyAscii = Asc("/")
    End If
End Sub

为我工作。

另一个近似值是使用 BeforeUpdate 和 AfterUpdate 事件。在更新前您不能修改控件的内容,但您可以在更新后事件中设置一个标志(在模块/表单级别定义的变量)并更改内容:它将再次触发更新前,但在这种情况下,因为是标记你会忽略它并取消标记。

于 2011-06-22T21:03:35.240 回答
0

http://office.microsoft.com/en-us/access-help/control-data-entry-formats-with-input-masks-HA010096452.aspx

输入掩码。

于 2011-06-22T17:29:14.963 回答
0

我为一个习惯于在输入掩码中输入 6 位和 8 位日期的用户编写了以下函数,只需键入一串没有分隔符的数字。您应该能够根据您的目的对其进行修改:

'---------------------------------------------------------------------------
' Purpose   : Enables entry of 8-digit dates with no delimiters: 12312008
' Usage     : Set OnChange: =DateCtlChange([Form].[ActiveControl])
'  8/ 6/09  : Allow entry of 6-digit dates with no delimiters
'               (year 2019 and 2020 must still be entered as 8-digit dates)
'---------------------------------------------------------------------------
Function DateCtlChange(DateCtl As TextBox)
Dim s As String, NewS As String

    On Error GoTo Err_DateCtlChange

    s = DateCtl.Text
    Select Case Len(s)
    Case 6
        If s Like "######" Then
            If Right(s, 2) <> "19" And Right(s, 2) <> "20" Then
                NewS = Left(s, 2) & "/" & Mid(s, 3, 2) & "/" & Mid(s, 5, 2)
            End If
        End If
    Case 8
        If s Like "########" Then
            NewS = Left(s, 2) & "/" & Mid(s, 3, 2) & "/" & Mid(s, 5, 4)
        End If
    End Select
    If IsDate(NewS) Then
        DateCtl.Text = NewS
        DateCtl.SelStart = Len(DateCtl.Text)
    End If


Exit_DateCtlChange:
    Exit Function
Err_DateCtlChange:
    Select Case Err.Number
    'Error 2101 is raised when we try to set the text to a date 
    '    that fails the date control's validation
    Case 2101    'The setting you entered isn't valid for this property.
        'Log error but don't show user
    Case Else
        'Add your custom error logging here
    End Select
    Resume Exit_DateCtlChange
End Function
于 2011-06-22T18:31:25.023 回答
0

Access 使用系统日期和时间格式来确定如何转换值。另一个选项 - 会影响此用户计算机上的每个程序 - 是:http: //office.microsoft.com/en-us/access-help/change-the-default-date-time-number-or-measurement-格式-HA010351415.aspx?CTT=1#BM2

于 2011-06-22T20:32:38.590 回答
0

或者,您可以在 Access 中的日期中使用空格而不是斜杠。因此,用户可以在空格键上使用左手,在数字键盘上使用右手。我觉得这比斜线或连字符更容易使用。

于 2011-06-22T21:11:31.923 回答