VBA Access: Obtener fecha de cumpleaños y mostrar mensaje
Dado que tengo la fecha de nacimiento de una persona, al consultar datos de esta persona de diferentes maneras, necesito obtener un mensaje que me indique cuánto falta para su cumpleaños desde una semana de anticipación ("Faltan X días para el cumpleaños de Y" o bien "Hoy cumple X años").
Intenté armar la fecha de su próximo cumpleaños mediante Day y Month pero por algún motivo no me da correcta la fecha (por ejemplo, la fecha de cumpleaños es 18/11/2016 y me la arma como 30/12/2016).
Public Sub CUMPLEANOS()
Dim DIANAC As Integer, MESNAC As Integer, CUMPLE As Date, FECHA As Date, vT As String, vFNac As Date, vNom As String
On Error GoTo ERRH
' Establecela fecha de defunción
vFNac = DLookup("[FNAC]", "[LECTOR]", "[DNI] = " & VCONSULTA & "")
vNom = DLookup("[NOM]", "[LECTOR]", "[DNI] = " & VCONSULTA & "")
vNom = vNom & " " & DLookup("[APE]", "[LECTOR]", "[DNI] = " & VCONSULTA & "")
RETOMAR:
' Establece día y mes del cumpleaños
DIANAC = Day(vFNac)
MESNAC = Month(vFNac)
' Establece cumpleaños
MsgBox "Día: " & DIANAC & vbLf & "Mes: " & MESNAC & vbLf & "FNac: " & vFNac
CUMPLE = DateSerial(Year(Now()), MESNAC, DIANAC)
FECHA = Format(Now(), "dd/mm/yyyy")
MsgBox "Fecha: " & FECHA & vbLf & "Cumple: " & CUMPLE
' If CUMPLE = (FECHA + 7) Then
' vT = "en 1 semana"
' ElseIf CUMPLE = (FECHA + 2) Then
' vT = "pasado mañana"
' ElseIf CUMPLE = (FECHA + 1) Then
' vT = "mañana!"
' ElseIf CUMPLE <= (FECHA + 6) Then
' vT = "en " & (FECHA + 6) - Date & " días"
' ElseIf CUMPLE = FECHA Then
' MsgBox "¡" & vNom & " cumple " & Int((CUMPLE - vFNac) / 365) & " años del día de hoy!", 48, "Cumpleaños del Lector"
'' ElseIf CUMPLE > FECHA Then
'' vT = "este mes: el " & CUMPLE
' End If
' If FECHA < CUMPLE Then
' MsgBox "¡" & vNom & " cumple años " & vT & "!", 48, "Cumpleaños del Lector"
' End If
'-------- FIN CONTROL DE CUMPLEAÑOS --------
EXITH:
Exit Sub
ERRH:
If Err.Number = 2471 Then
MsgBox "No se ha logrado obtener la fecha de cumpleaños del lector." & vbLf & _
"Error: " & Err.Number & ". " & Error$ & ".", 16, "Error " & Err.Number
ElseIf Err.Number = 94 Or Err.Number = 0 Then
vFNac = vFECHANACIMIENTO
vNom = vNOMBRE & " " & vAPELLIDO
GoTo RETOMAR
Else
ENTORNOERR = "Calculos.CUMPLEANOS"
Mensajes.ERR_GENERAL_BY_N
End If
End SubEl código que hice lo intento corregir al darme cuenta que no me da bien los datos, pero habrá parte comentada o MsgBox con el fin de controlar valores. No logro dar pie con bola.
1 respuesta
Respuesta de Jacinto Trillo Jareño
2
