473,406 Members | 2,620 Online
Bytes | Software Development & Data Engineering Community
Post Job

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 473,406 software developers and data experts.

As Of Date function

I made a simple public function to set and return a date value (see
below). I have a number of queries that call up the function to get
the "As Of Date," which is typically set to today's date. Occasionally
though, I need to change the "As Of Date" to some date in the past,
and then when I run the queries, they're based on that date in the
past. This generally works fine, but, sometimes, the date gets reset
to something WAY in the past like "1/1/1900 12:00:00AM" (it's always
the same, I just can't recall the exact date).

Once that happens, the only way to get the date to reset to today's
date is to recompile the database. I checked everywhere I was setting
the date to ensure that I was using the right data type. No problems
there. Any ideas? (see code below) Thanks!

Option Compare Database
Option Explicit
Public dteAsOfDate As Date

Function SetAsOfDate(dte As Date)

dteAsOfDate = dte

End Function

Function GetAsOfDate() As Date

GetAsOfDate = dteAsOfDate

End Function
Oct 17 '08 #1
3 4384
Oops, not "recompile" the database. I meant "compact" the database.
Oct 17 '08 #2
Day zero of the Access date system was December 30, 1899. If Access looks at
a variable, and treats it as a string value rather than a date, it can treat
it as day zero, and hence the problem you describe.

The solution has to do with the way you pass and return dates to/from the
function. I would imagine that the simplest approach would be pass two
values into your function:
a) the value whose age you are trying to determine;
b) the 'as-of' date.
You could make (b) optional, and have the function use today if missing.

Another factor here is that the Date in VBA cannot handle Null. (That's true
of all VBA types except variant.) It's quite common for
queries/forms/reports to pass a null value to a function. Even if the field
is required, it can happen (e.g. outer joins, or even the primary key value
at a new record.) In general, this means the function needs to accept and
return a Variant, and the query needs to massage the returned value.

So, you might declare the function like this:
Function Age(varDate As Variant, Optional varAsOf As Variant) As Variant

Then in the query, to get the age based on the DOB field as of today, you
would type an expression like this in the Field row in query design:
Age([DOB])
Or to get the age as of Jan 1 next year:
Age([DOB], #1/1/2009#)

Example of such a function:
http://allenbrowne.com/func-08.html

--
Allen Browne - Microsoft MVP. Perth, Western Australia
Tips for Access users - http://allenbrowne.com/tips.html
Reply to group, rather than allenbrowne at mvps dot org.

<mu*************@gmail.comwrote in message
news:f7**********************************@f63g2000 hsf.googlegroups.com...
>I made a simple public function to set and return a date value (see
below). I have a number of queries that call up the function to get
the "As Of Date," which is typically set to today's date. Occasionally
though, I need to change the "As Of Date" to some date in the past,
and then when I run the queries, they're based on that date in the
past. This generally works fine, but, sometimes, the date gets reset
to something WAY in the past like "1/1/1900 12:00:00AM" (it's always
the same, I just can't recall the exact date).

Once that happens, the only way to get the date to reset to today's
date is to recompile the database. I checked everywhere I was setting
the date to ensure that I was using the right data type. No problems
there. Any ideas? (see code below) Thanks!

Option Compare Database
Option Explicit
Public dteAsOfDate As Date

Function SetAsOfDate(dte As Date)

dteAsOfDate = dte

End Function

Function GetAsOfDate() As Date

GetAsOfDate = dteAsOfDate

End Function
Oct 18 '08 #3
Perhaps you should check for a valid AsOfDate with the GetAsOfDate
Function.

e.g. (air code)

Dim mAsOfDate As Date

Public Function LetAsOfDate(Optional vDate As Date)
On Error GoTo AsOfDateErr
If CDbl(vDate) = 0 Then
vDate = CDate(InputBox("Enter As Of Date in format yyyy-mm-
dd", "As Of Date", Format(VBA.Date(), "yyyy-mm-dd")))
End If
mAsOfDate = vDate
AsOfDateExit:
mAsOfDate = GetAsOfDate()
Exit Function
AsOfDateErr:
MsgBox Err.Description, vbInformation, "error " & Err.Number
Resume AsOfDateExit
End Function

Public Function GetAsOfDate() As Date
If CDbl(mAsOfDate) = 0 Then LetAsOfDate
GetAsOfDate = mAsOfDate
End Function

On Oct 17, 3:39*pm, murch.alexan...@gmail.com wrote:
I made a simple public function to set and return a date value (see
below). I have a number of queries that call up the function to get
the "As Of Date," which is typically set to today's date. Occasionally
though, I need to change the "As Of Date" to some date in the past,
and then when I run the queries, they're based on that date in the
past. This generally works fine, but, sometimes, the date gets reset
to something WAY in the past like "1/1/1900 12:00:00AM" (it's always
the same, I just can't recall the exact date).

Once that happens, the only way to get the date to reset to today's
date is to recompile the database. I checked everywhere I was setting
the date to ensure that I was using the right data type. No problems
there. Any ideas? (see code below) Thanks!

Option Compare Database
Option Explicit
Public dteAsOfDate As Date

Function SetAsOfDate(dte As Date)

* * dteAsOfDate = dte

End Function

Function GetAsOfDate() As Date

* * GetAsOfDate = dteAsOfDate

End Function
Oct 18 '08 #4

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

2
by: androtech | last post by:
Hello, I'm looking for a function that returns a date range for a specified week number of the year. I'm not able to find functions like this anywhere. Any pointers/help would be much...
8
by: peashoe | last post by:
I have an asp page that uses a calendar.js (pop-up) file to add an exact date format in the text field (txtDDate). My problem is I need some javascript that sets an alert that does not allow them...
30
by: Dr John Stockton | last post by:
It has appeared that ancient sources give a method for Numeric Date Validation that involves numerous tests to determine month length; versions are often posted by incomers here. That sort of code...
1
by: Liz Malcolm | last post by:
Hello and TIA. I have a DE form with an option group that if daily is selected todays date is used for start and end date, if weekly is selected Monday - Friday is used. I am trying to add a...
10
by: John Morgan | last post by:
Does anyone know what parameter should be used instead of Date = 0 for the optional parameter in the following function? Public Function dhAge(ByVal dtmBD As Date, Optional ByVal dtmDate As Date...
12
by: Assimalyst | last post by:
Hi, I have a working script that converts a dd/mm/yyyy text box date entry to yyyy/mm/dd and compares it to the current date, giving an error through an asp.net custom validator, it is as...
6
by: Luvin lunch | last post by:
Hi, I'm new to access and am very wary of dates as I have limited experience in their manipulation and I know if they're not done properly things can turn ugly quickly. I would like to use a...
3
by: dave | last post by:
I need to compute an expiration date based on the number of hours, days, or months purchased. The expiration date needs to be expressed in minutes something like '1260481600'. How can I get the...
10
by: Jes | last post by:
Dear all I have a date field on a HTML form where the user is asked to key in dd/mm/yyyy However, when that is written to MySql it is either not accepted or another value is tored in the...
0
by: Charles Arthur | last post by:
How do i turn on java script on a villaon, callus and itel keypad mobile phone
0
by: emmanuelkatto | last post by:
Hi All, I am Emmanuel katto from Uganda. I want to ask what challenges you've faced while migrating a website to cloud. Please let me know. Thanks! Emmanuel
0
BarryA
by: BarryA | last post by:
What are the essential steps and strategies outlined in the Data Structures and Algorithms (DSA) roadmap for aspiring data scientists? How can individuals effectively utilize this roadmap to progress...
1
by: nemocccc | last post by:
hello, everyone, I want to develop a software for my android phone for daily needs, any suggestions?
1
by: Sonnysonu | last post by:
This is the data of csv file 1 2 3 1 2 3 1 2 3 1 2 3 2 3 2 3 3 the lengths should be different i have to store the data by column-wise with in the specific length. suppose the i have to...
0
by: Hystou | last post by:
There are some requirements for setting up RAID: 1. The motherboard and BIOS support RAID configuration. 2. The motherboard has 2 or more available SATA protocol SSD/HDD slots (including MSATA, M.2...
0
marktang
by: marktang | last post by:
ONU (Optical Network Unit) is one of the key components for providing high-speed Internet services. Its primary function is to act as an endpoint device located at the user's premises. However,...
0
Oralloy
by: Oralloy | last post by:
Hello folks, I am unable to find appropriate documentation on the type promotion of bit-fields when using the generalised comparison operator "<=>". The problem is that using the GNU compilers,...
0
agi2029
by: agi2029 | last post by:
Let's talk about the concept of autonomous AI software engineers and no-code agents. These AIs are designed to manage the entire lifecycle of a software development project—planning, coding, testing,...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.