Solved

If Date is Null Then Date = Date()

Posted on 2013-06-10
4
460 Views
Last Modified: 2013-06-10
I have found a function that functions almost to my requirements and is used to show the years of service for an employee. The problem is that it requires a start date and end date. (Both fields on a form) Therefore if an employee is still in service then there is no enddate, so therefore if the enddate is null I would like it to take todays Date() as the enddate

The form also contains a field with the expression

=YMD_DateDiff([StartDate],[EndDate])

The function behind the form is

Function YMD_DateDiff(ByVal pdStDate As Date, _
ByVal pdEndDate As Date) As String
Dim iYears As Integer, iMonths As Integer, iDays As Integer
Dim dYearsAddedDate As Date, dMonthsAddedDate As Date
Dim sDifference As String

iYears = DateDiff("yyyy", pdStDate, pdEndDate)
dYearsAddedDate = DateAdd("yyyy", iYears, pdStDate)
If dYearsAddedDate > pdEndDate Then
  'dates were less than one year apart, so subtract 1
  iYears = iYears - 1
  dYearsAddedDate = DateAdd("yyyy", iYears, pdStDate)
End If

iMonths = DateDiff("m", dYearsAddedDate, pdEndDate)
dMonthsAddedDate = DateAdd("m", iMonths, dYearsAddedDate)
If dMonthsAddedDate > pdEndDate Then
  'dates were less than one month apart, so subtract 1
  iMonths = iMonths - 1
  dMonthsAddedDate = DateAdd("m", iMonths, dYearsAddedDate)
End If

iDays = DateDiff("d", dMonthsAddedDate, pdEndDate)
sDifference = iYears & IIf(iYears = 1, " year, ", " years, ") _
& iMonths & IIf(iMonths = 1, " month, ", " months, ") & iDays _
& IIf(iDays = 1, " day", " days")

YMD_DateDiff = sDifference

End Function

I suspect that it is in the field expression that I should make the ajustment but unsure about how best to achieve it?
0
Comment
Question by:MGardner
  • 2
4 Comments
 
LVL 61

Accepted Solution

by:
mbizup earned 500 total points
ID: 39235193
Try this for the calling expression

 = ymd_datediff( startdate, nz(enddate, date()))
0
 
LVL 5

Expert Comment

by:DOSLover
ID: 39235202
I would suggest to set the parameter date, if NULL, to todays date right at the beginning of the function as:
IF isNULL(pdEndDate) then
    pdEndDate=Date()
end if

Open in new window

0
 
LVL 2

Author Closing Comment

by:MGardner
ID: 39235251
excellent solution, many thanks
0
 
LVL 2

Author Comment

by:MGardner
ID: 39235261
I tried testing for a null date in the in the function exactly as above but got a Error# but thanks any ways much appreciated
0

Featured Post

How to run any project with ease

Manage projects of all sizes how you want. Great for personal to-do lists, project milestones, team priorities and launch plans.
- Combine task lists, docs, spreadsheets, and chat in one
- View and edit from mobile/offline
- Cut down on emails

Join & Write a Comment

PaperPort has a feature called the "Send To Bar". It provides a convenient, drag-and-drop interface for using other installed software, such as Microsoft Office. However, this article shows that the latest Office 2016 apps (installed with an Office …
In this article we discuss how to recover the missing Outlook 2011 for Mac data like Emails and Contacts manually.
With Microsoft Access, learn how to start a database in different ways and produce different start-up actions allowing you to use a single database to perform multiple tasks. Specify a start-up form through options: Specify an Autoexec macro: Us…
Learn how to make your own table of contents in Microsoft Word using paragraph styles and the automatic table of contents tool. We'll be using the paragraph styles in Word’s Home toolbar to help you create a table of contents. Type out your initial …

708 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

18 Experts available now in Live!

Get 1:1 Help Now