2011-06-22 14 views
1

複数の日付入力フィールドを含むフォームを持つAccessデータベースを使用しています。私は、日付の区切り記号としてピリオドを使用する新しいユーザーを持っているので、「6/22/11」または「6-22-11」の代わりに「6.22.11」と入力します。私はこのタイプのエントリを許可し続けたいと思いますが、Accessは日付の代わりに "6.22.11"を時刻に変換します。私はテキストボックスのフォーマットを「短い日付」に設定しようとしましたが、何の助けもありませんでした。私はまた、 "Lost Focus"イベントにコードを追加しようとしましたが、それはAccessが既に変換を行ってから遅くなります。 "Before Update"イベントは変換前に発生しますが、テキストボックス内のテキストを変更することはできません。どのように私は日付エントリのすべての3つのフォームを許可することができます上の任意のアイデア?MS Accessで期間を区切って日付を区切ることを許可する

+0

私は、テキストボックスのKeyPressイベントを調べ始めました。それは、 '。'文字を置き換えることができるように見えます。彼らがタイプしている間に「/」と付いているが、私はそれを働かせることはできない。ブレークポイントを設定するとコードが動作するように見えますが、テキストボックスに入力されたテキストは変更されません。 'Private Sub Lot_Date_KeyPress(KeyAscii As Integer) Chr(KeyAscii)="。 "ならば、次に KeyAscii = Asc( "/") 終了の場合 End Sub' – AdmSteck

+1

これを乗り越えて標準的な方法で日付を入力するようにユーザーに指示します。 –

+1

デビッドはそうです...あなたは、そのような非問題についてあなたの時間の1分を失うことを考慮すべきではありません。キー入力やマウスを使用する標準的な方法があるように、日付を入力する標準的な方法があり、ユーザーはこれらの規則に従わなければなりません。 –

答えて

1

あなたの上記の例

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

私にとっては作品:別のオプション - - このユーザーのコンピュータ上のすべてのプログラムに影響を与える、このです。

もう1つの相違点は、BeforeUpdateイベントとAfterUpdateイベントで発生します。 BeforeUpdateでは、コントロールのコンテンツを変更することはできませんが、AfterUpdateイベントでフラグ(モジュール/フォームレベルで定義された変数)を設定して内容を変更することができます。これはBeforeUpdateを再度トリガーしますが、あなたはそれを無視し、フラグを立ててはいけないと警告されます。

+0

何らかの理由で、私はまだKeyPressイベントを動作させることができません。 BeforeUpdateイベントとAfterUpdateイベントを利用してアイデアを使用することができました。それは魅力的なものです。ありがとう! – AdmSteck

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 
0

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

関連する問題