En acceSumaSumarna fecha inicial días, semanas, quincenas o meses y calcular un vencimiento. Por ejem.sumar 1 sem y 2 días

Tengo un formulario con un campo fecha inicial y otro con fecha final. Y tengo otros campos para poner días, semanas, quincenas y meses. Lo que quiero es por ejemplo que partiendo de la fecha inicial si pongo que le sume 2 en el campo días y 1 en el campo semanas, me sume los días en el campo fecha final. Por ejemplo para calcular la fecha fin de contrato de un inmueble vacacional que quiero alquilar 1 1 mes y 5 días

2 Respuestas

Respuesta
1

No dices cuando quieres que haga el cálculo, así que se lo pongo en el evento Al recibir el enfoque del cuadro de texto FFinal. Si escribo una fecha Inicial

Cuando el cursor llega a FFinal

Con otros números

El código del evento Al recibir el enfoque del cuadro de texto FFinal es

Private Sub FFinal_GotFocus()
FFinal = FInicial + (Nz([Dias]) * 1) + (Nz([Semanas]) * 7) + (Nz([Quincenas]) * 15)
End Sub
Respuesta
1

Es algo que no se puede tomar de prisa. He preparado este ejemplo como se trata de alquiler por día no se pueden tomar meses de 30 días y se deben tener en cuenta los años bisiestos y meses de 30 y 31 días. Consta de una función a nivel de módulo, un procedimiento a nivel de formulario y el formulario.

Ejemplo 1

En este ejemplo se hace el cálculo con el mes de febrero de 28 días, observe que se cuentan los 27 días de febrero y NO 30

Ejemplo 2

Ejemplo 3

Código del formulario

Sub calcular()
 If IsDate(Me.ctlFechaInicial) Then
   Me.ctlFechaFinal = tdias(Me.ctlFechaInicial, Nz(Me.cboMeses), Nz(Me.cboQuincenas), Nz(Me.cboSemanas), Nz(Me.cboDias))
   Me.lblDias.Visible = True
   Me.lblDias.Caption = "Total días  ------>> " & DateDiff("d", Me.ctlFechaInicial, Me.ctlFechaFinal)
 Else
   Me.lblDias.Visible = False
 End If
End Sub
Private Sub cboDias_AfterUpdate()
  Call calcular
End Sub
Private Sub cboMeses_AfterUpdate()
  Call calcular
End Sub
Private Sub cboQuincenas_AfterUpdate()
  Call calcular
End Sub
Private Sub cboSemanas_AfterUpdate()
  Call calcular
End Sub
Private Sub ctlFechaInicial_AfterUpdate()
  Call calcular
End Sub

Código de la función

Public Function tdias(dinicio As Date, Optional nmeses As Integer, _
Optional nquincenas As Integer, Optional nsemanas As Integer, _
Optional ndias As Integer) As Date
'Función para determinar el número de dias a partir de una fecha
'inical con meses, quincenas, semanas y días
'Elaborada Por: Eduardo Pérez Fernández
'Fecha: 13/09/2021
'Nota: Se considera el primer de día de la semana como Lunes, si toma el día domingo
'      elimine VbMonday o cambielo por vbSunday
 Dim intDias As Integer
 intDias = DateDiff("d", dinicio, DateAdd("m", nmeses, dinicio), vbMonday)
 intDias = intDias + nquincenas * 15 + nsemanas * 7 + ndias
 tdias = DateAdd("d", intDias, dinicio)
End Function

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

¡Gracias! Voy a probarlo

Una pregunta ! Mi formulario se llama gestiones y dentro de él hay muchos campos, entre ellos fechaini, fechafin, días, semanas, quincenas, meses que son los campos implicados en calcular la fechafin. No me queda claro dónde colocar el código que me has enseñado. Gracias

¿Es un formulario continuo?

Si puede suba una imagen, así la repuesta sería más precisa

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas