Solved

Show / Hide image if current day/month equals birthday

Posted on 2016-08-14
5
68 Views
Last Modified: 2016-08-14
Dear Experts,

Okay...a little stumped on this one.

I want to show an image of a birthday cake (imgCake) only if the date in the student's birthday field (me.studentDOB) is equal to today's month and day.

Any ideas on vba syntax?

Thanks!
0
Comment
Question by:shogun5
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
5 Comments
 
LVL 57

Assisted Solution

by:Jim Dettman (Microsoft MVP/ EE MVE)
Jim Dettman (Microsoft MVP/ EE MVE) earned 125 total points
ID: 41755525
In the on current event:

 If Month(Now()) = Month([Birthdate]) and Day(Now()) = Day([Birthdate]) then
     Me.<myimagecontrolname>.Visible = True
 Else
     Me.<myimagecontrolname>.Visible = False
 End If

 What the above does not take into account is leap years and someone born on 2/29.  Not sure how you want to handle that.  Some say on non-lean years, the birthday occurs on the 28th, others 3/1.

Jim.
0
 
LVL 50

Accepted Solution

by:
Gustav Brock earned 250 total points
ID: 41755572
You can use the function below and this expression:

    Me!imgCake.Visible = IsBirthday(Me!studentDOB.Value)

Public Function IsBirthday( _
  ByVal datDateOfBirth As Date, _
  Optional varDate As Variant) _
  As Boolean

' Returns True if date varDate (or today) is an annual birthday.
' Validates correctly Feb. 29. as Feb. 28. for non leap years and
' excludes annual birthdays earlier than the date of birth.
'
' Gustav Brock, Cactus Data ApS.
' 2000-12-20.
' 2008-05-12. Converted to stand-alone function.

  Dim datDate     As Date
  Dim booBirthday As Boolean
  
  ' No special error handling.
  On Error Resume Next
  
  If IsDate(varDate) Then
    datDate = Fix(CDate(varDate))
  Else
    datDate = Date
  End If
  booBirthday = (DateDiff("d", datDate, DateAdd("yyyy", Abs(DateDiff("yyyy", datDateOfBirth, datDate)), datDateOfBirth)) = 0)

  IsBirthday = booBirthday

End Function

Open in new window

/gustav
0
 
LVL 30

Assisted Solution

by:hnasr
hnasr earned 125 total points
ID: 41755621
Some variation from above:

Check this to flag a date if
                            equal months) AND   equal days
 OR
                                      28 days for Feb if birth was in a leap year.
Assume: date of birth (dob), and current date (dn)

Me.imageControl.Visible = ((month(dn)=month(dob)) AND ((Day(dn)=Day(dob)) OR ( Month(dob=2) AND (Day(dn) Mod 28)=(Day(dob) Mod 29) )))

Open in new window

0
 

Author Closing Comment

by:shogun5
ID: 41755689
Thank you!
0
 
LVL 50

Expert Comment

by:Gustav Brock
ID: 41755946
You are welcome!

/gustav
0

Featured Post

Online Training Solution

Drastically shorten your training time with WalkMe's advanced online training solution that Guides your trainees to action. Forget about retraining and skyrocket knowledge retention rates.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

I see at least one EE question a week that pertains to using temporary tables in MS Access.  But surprisingly, I was unable to find a single article devoted solely to this topic. I don’t intend to describe all of the uses of temporary tables in t…
Describes a method of obtaining an object variable to an already running instance of Microsoft Access so that it can be controlled via automation.
Learn how to number pages in an Access report over each group. Activate two pass printing by referencing the pages property: Add code to the Page Footers OnFormat event to capture the pages as there occur for each group. Use the pages property to …
Using Microsoft Access, learn some simple rules for how to construct tables in a relational database. Split up all multi-value fields into single values: Split up fields that belong to other things into separate tables: Make sure that all record…

726 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