Como conseguir un tiempo de caducidad de un formulario en forma regresiva

Tengo un formulario que debe vencerse a los 30 día y necesito que a los tres días de terminarse le de una información al cliente que le quedan tres días, a los dos día otra información que le quedan dos días, luego un día y luego caduco

Respuesta
1

Tengo 1 tabla de clientes y otra de deudas

CLIENTES

DEUDAS

CONSULTA VENCIMIENTOS

DISEÑO DE LA CONSULTA

Como no es legible el texto, se lo transcribo:

Texto columna "dias" :

dias: Abs(DifFecha("d";[fecha_vence];Fecha()))

Texto columna "informe":

informe: SiInm([dias]=0;"Caducó";SiInm([dias]=1;"Le vence en 1 día";SiInm([dias]=2;"Le vence en 2 días";SiInm([dias]=3;"Le vence en 3 días";"Vencido"))))

Se puede hacer de otras formas.

Para el cálculo he tomado la fecha 20/06/2021

Rectifico revisé y hay inconsistencia. Le presento la opción de hacerlo 2 formas con una consulta o una función.

TABLA

Observe que ya está tabla no tiene la columna fecha_vence, toda vez, que se obtiene de la consulta.

CONSULTA CON IIF()

DISEÑO DE LA CONSULTA CON IIF()

Contenido de los campos que se ven incompletos en la imagen:

1 fecha_vence: [fechadeuda]+30

2 dias: DifFecha("d";[fecha_vence];Fecha())-1

3 informe: SiInm([dias]=0;"Caducó";SiInm([dias]=-1;"Le vence en 1 día";SiInm([dias]=-2;"Le vence en 2 días";SiInm([dias]=-3;"Le vence en 3 días";SiInm([dias]>0;"Vencido";"Sin vencer")))))

CONSULTA CON LA FUNCIÓN

DISEÑO DE LA CONSULTA CON LA FUNCIÓN

Observe que es mucho más practico el uso de la función resultado(), tiene la ventaja que la puede llamar desde cualquier consulta, formulario o reporte.

CÓDIGO DE LA FUNCIÓN

Public Function resultado(mfecha_prestamo, mdias_vence) As String
 Dim dias As Integer
 Dim fecha_vence As Date
 fecha_vence = DateAdd("d", mdias_vence, mfecha_prestamo)
 dias = DateDiff("d", fecha_vence, Date) - 1
 Select Case dias
    Case 0
      resultado = "Caducó"
    Case -1
      resultado = "Vence en 1 día"
    Case -2
     resultado = "Vence en 2 días"
    Case -3
     resultado = "Vence en 3 días"
    Case Is > 0
     resultado = "Vencido"
    Case Else
     resultado = "Si vencer"
 End Select
End Function

La función requiere de 2 parámetros, fecha del préstamo y el plazo en días.

EJEMPLO EN UN FORMULARIO

Ejemplo 1

Ejemplo 2

Ejemplo 3

Ejemplo 3 (Plazo a más de 30 días)

Código al cambiar el plazo del cuadro combinado:

Private Sub cboPlazo_AfterUpdate()
  If IsDate(Me.fechaPrestamo) Then
    Me.ctlEstado = resultado(Me.fechaPrestamo, Me.cboPlazo)
  End If
End Sub

Si quiere el ejemplo puede solicitarlo a [email protected], favor en el asunto anotar la consulta.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas