1

複数の日付入力フィールドを含むフォームがある Access データベースを使用しています。日付の区切り文字としてピリオドを使用することに慣れている新しいユーザーがいるので、"6/22/11" または "6-22-11" の代わりに "6.22.11" と入力します。この種類のエントリを引き続き許可したいのですが、Access は "6.22.11" を日付ではなく時刻に変換します。テキストボックスのフォーマットを「Short Date」に設定しようとしましたが、助けがありませんでした。また、「Lost Focus」イベントにコードを追加しようとしましたが、Access が既に変換を行っているため、遅すぎます。「Before Update」イベントは変換前に発生しますが、テキスト ボックス内のテキストを変更することはできません。日付入力の 3 つの形式すべてを許可する方法についてのアイデアはありますか?

4

5 に答える 5

1

上記の例

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

私のために働きます。

もう1つの近似は、BeforeUpdateイベントとAfterUpdateイベントで遊ぶことです。BeforeUpdateでは、コントロールのコンテンツを変更することはできませんが、AfterUpdateイベントでフラグ(モジュール/フォームレベルで定義された変数)を設定してコンテンツを変更できます。これにより、BeforeUpdateが再度トリガーされますが、この場合は、フラグを立てると、それを無視してフラグを外す必要があります。

于 2011-06-22T21:03:35.240 に答える
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 は、システムの日付と時刻の形式を使用して、値の変換方法を決定します。このユーザーのコンピューター上のすべてのプログラムに影響を与える別のオプションは、次のとおりです。 format-HA010351415.aspx?CTT=1#BM2

于 2011-06-22T20:32:38.590 に答える
0

または、Access の日付にスラッシュの代わりにスペースを使用できます。したがって、ユーザーは左手でスペース バーを使用し、右手で数字キーボードを使用できます。これは、スラッシュやハイフンよりもはるかに使いやすいと思います。

于 2011-06-22T21:11:31.923 に答える
0

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

入力マスク。

于 2011-06-22T17:29:14.963 に答える