Solved

Show / Hide image if current day/month equals birthday

Posted on 2016-08-14
5
52 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
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 49

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 49

Expert Comment

by:Gustav Brock
ID: 41755946
You are welcome!

/gustav
0

Featured Post

Comprehensive Backup Solutions for Microsoft

Acronis protects the complete Microsoft technology stack: Windows Server, Windows PC, laptop and Surface data; Microsoft business applications; Microsoft Hyper-V; Azure VMs; Microsoft Windows Server 2016; Microsoft Exchange 2016 and SQL Server 2016.

Question has a verified solution.

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

When you are entering numbers in a speadsheet, and don't remember what 6×7 is, you just type “=6*7" instead. It works in every cell! This is not so in Access. To enter the elusive 42 in a text box, you have to find a calculator, and then copy the re…
I originally created this report in Crystal Reports 2008 where there is an option to underlay sections. I initially came across the problem in Access Reports where I was unable to run my border lines down through the entire page as I was using the P…
Familiarize people with the process of utilizing SQL Server stored procedures from within Microsoft Access. Microsoft Access is a very powerful client/server development tool. One of the SQL Server objects that you can interact with from within Micr…
Show developers how to use a criteria form to limit the data that appears on an Access report. It is a common requirement that users can specify the criteria for a report at runtime. The easiest way to accomplish this is using a criteria form that a…

912 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

24 Experts available now in Live!

Get 1:1 Help Now