Solved

Access Date Format using Dot or Period as Separator

Posted on 2013-11-21
10
714 Views
Last Modified: 2013-11-22
We have Office 2010.  In Access 2010, I have a table named Docket.  In this table I have a field called DktDate.

The field DktDate is formatted as a Short Date.  I created a Form named frmDocket.

When I enter dates into the DktDate field of this form...
   I can type 11/21/2013 and it displays as 11/21/2013 - This is perfect.
   I can type 11/21/13 and it displays as 11/21/2013 - This is perfect.
   I can type 11.21.2013 and it displays as 11/21/2013 - This is perfect.
   I can type 11.21.13 and it displays as 12/30/1899 - This is a major issue!

I need my users to also be able to type 11.21.13 and I need it to display 11/21/2013.

Can anyone assist me with this?  

Also, I don't want to have to alter my settings under the Windows Regional and Language Options.

Thanks in advance!
0
Comment
Question by:Senniger1
  • 4
  • 4
  • 2
10 Comments
 
LVL 119

Expert Comment

by:Rey Obrero
Comment Utility
you can do this by adding an unbound textbox to your form "txtDate"

in the afterupdate of this textbox, set the value of your DktDate

me.DktDate=replace(me.txtDate,".","/")
0
 

Author Comment

by:Senniger1
Comment Utility
capricorn1 - I always appreciate your help.

I want to mention I simplified my form so everyone could understand my question.  My actual form has at least 50 date fields.

With that being said, what field are you proposing the user enters the date into?  The DktDate field or the txtDate field.  And if it's the latter, will it still format all the other entry variations (listed above) correctly?

Thanks!
0
 
LVL 119

Expert Comment

by:Rey Obrero
Comment Utility
<And if it's the latter, will it still format all the other entry variations (listed above) correctly?>

Yes

better using the cdate() function

me.DktDate=cdate(replace(me.txtDate,".","/") )
0
 

Author Comment

by:Senniger1
Comment Utility
So sorry.  I'm still confused.  

Will the user be entering the date in the DktDate field on the form or on the txtDate field on the form?
0
 
LVL 119

Expert Comment

by:Rey Obrero
Comment Utility
the date will entered in txtDate,

in the afterupdate of this textbox, set the value of your DktDate

me.DktDate=cdate(replace(me.txtDate,".","/") )
0
Get up to 2TB FREE CLOUD per backup license!

An exclusive Black Friday offer just for Expert Exchange audience! Buy any of our top-rated backup solutions & get up to 2TB free cloud per system! Perform local & cloud backup in the same step, and restore instantly—anytime, anywhere. Grab this deal now before it disappears!

 

Author Comment

by:Senniger1
Comment Utility
Okay, I see that logic works, however I'm concerned with my form.  If I have to add an unbound textbox for every date field I have on my form then I will have two fields showing for every field.  

My form is quite involved with 50+ dates on it and barely has room for all the fields already on it.  Also I think it would be quite confusing to see to date fields for each item on the form.

Am I missing something?
0
 
LVL 119

Expert Comment

by:Rey Obrero
Comment Utility
you don't need to show the bound controls for dates in your form,
just  show the unbound controls

you can place the unbound textboxes on top of the bound controls
0
 
LVL 49

Accepted Solution

by:
Gustav Brock earned 500 total points
Comment Utility
You should take another route.

Your issue is that when using dots only and small numbers, the input is read a time.
So all you need is to check for this and convert in the AfterUpdate event of DktDate using the components of the entered time value. No extra textboxes are needed.
As you have many date fields, you will need to call a function:

Private Sub DktDate_AfterUpdate()
    
    Call ConvertTimeToDate(Me!DktDate)

End Sub

Private Sub ConvertTimeToDate(ByRef ctl As Control)

    Dim varDate As Variant
    
    varDate = ctl.Value
    If IsDate(varDate) Then
        If DateValue(varDate) = #12:00:00 AM# Then
            ctl.Value = DateSerial(Second(varDate), Hour(varDate), Minute(varDate))
        End If
    End If

End Sub

Open in new window

/gustav
0
 

Author Closing Comment

by:Senniger1
Comment Utility
This was exactly what I needed.  Thanks to everyone for your help!
0
 
LVL 49

Expert Comment

by:Gustav Brock
Comment Utility
You are welcome!

/gustav
0

Featured Post

How your wiki can always stay up-to-date

Quip doubles as a “living” wiki and a project management tool that evolves with your organization. As you finish projects in Quip, the work remains, easily accessible to all team members, new and old.
- Increase transparency
- Onboard new hires faster
- Access from mobile/offline

Join & Write a Comment

Not long ago I saw a question in the VB Script forum that I thought would not take much time. You can read that question (Question ID  (http://www.experts-exchange.com/Programming/Languages/Visual_Basic/VB_Script/Q_28455246.html)28455246) Here (http…
Describes a method of obtaining an object variable to an already running instance of Microsoft Access so that it can be controlled via automation.
With Microsoft Access, learn how to specify relationships between tables and set various options on the relationship. Add the tables: Create the relationship: Decide if you’re going to set referential integrity: Decide if you want cascade upda…
Access reports are powerful and flexible. Learn how to create a query and then a grouped report using the wizard. Modify the report design after the wizard is done to make it look better. There will be another video to explain how to put the final p…

762 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

11 Experts available now in Live!

Get 1:1 Help Now