Establecer campo fecha en función de otro mediante VB

Buenos días,
Estoy diseñando una BD con una única tabla (Deudores), en la que entre otros campos tengo [FNotificacion] que recoge la fecha en la que se notifica la deuda y [FinPlazoVol] que recoge el último día que tiene para el pago de la misma.
El último día de pago viene determinado por la fecha de notificación ([FNotificacion]), de la siguiente manera:
si la fecha de notificación es entre el día 1 y el 15, el último día será el 20 del mes siguiente;
y si la notificación es entre el 16 y final de mes, el último día será el 5 del segundo mes siguiente.
Ejemplo: si se notifica el 05/01/2012, el último día para el pago será el 20/02/2012. Si se notifica el 23/01/2012, el último día será el 05/03/2012.
El problema que tengo es que no se me ocurre ninguna forma para completar el código que intenté usar en el evento "después de actualizar":
If DatePart(d,[FNotificacion])<=15 then
[FinPlazoVol]=......
else
[FinPlazoVol]=......
end if
Si se te ocurre alguna cosa que me pueda ayudar, te estaría muy agradecido. Un saludo

1 respuesta

Respuesta
3
Prueba este código:
...
Private Sub FNotificacion_AfterUpdate()
'Declaramos las variables
Dim vDia As Integer, vMes As Integer, vAno As Integer
Dim nuevaFecha As Variant
'Asignamos valor a las variables
vDia = Day(Me.FNotificacion.Value)
vMes = Month(Me.FNotificacion.Value)
vAno = Year(Me.FNotificacion.Value)
'Analizamos la fecha en función del mes
Select Case vMes
Case Is <= 10
If vDia <= 15 Then
vDia = 20
vMes = vMes + 1
Else
vDia = 5
vMes = vMes + 2
End If
Case Is = 11
If vDia <= 15 Then
vDia = 20
vMes = vMes + 1
Else
vDia = 5
vMes = 1
vAno = vAno + 1
End If
Case Is = 12
If vDia <= 15 Then
vDia = 20
vMes = 1
vAno = vAno + 1
Else
vDia = 5
vMes = 2
vAno = vAno + 1
End If
End Select
'Construimos la nueva fecha (será un String)
nuevaFecha = vDia & "/" & vMes & "/" & vAno
'Convertimos la nueva fecha en tipo fecha
nuevaFecha = CDate(nuevaFecha)
'Asignamos el valor al campo destino
Me.FinPlazoVol.Value = nuevaFecha
End Sub
...

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas