Access - Sumar días a una fecha

 
Vista:

Sumar días a una fecha

Publicado por Eduardo (3 intervenciones) el 15/08/2007 15:42:23
Hola al Foro y gracias por su tiempo, mi consulta es la siguiente:
Tengo dos tablas la primera llamada “tblpdpago”, con los siguientes campos: Idfactura; fechafactura; montofactura; cantidaddecuotas; nrodecuota; vencimiento.

La segunda llamada “Feriados”, con un único campo: Fecha.

Luego tengo un formulario llamado Formulario1, y como origen del registro tiene a la tabla “tblpdpago”.
Y un Sub Formulario que está dentro del Formulario1 llamado “tblpdpago”, en forma de formulario continuo con todos los campos de la tabla (Idfactura; fechafactura; montofactura; cantidaddecuotas; nrodecuota).

Dentro del Formulario1 tengo cuatro cuadros independientes, y un botón de comando.
Los cuadros independientes se llaman: cFechanumero; cFacturaFecha; cFacturaMonto; cFacturaNumCuotas.
El botón de comando se llama: cmdplandepagos, y en la opción al hacer click tiene un procedimiento de evento con el siguiente código:

Public Sub cmdplandepagos_Click()

Dim db As Object, rst As Object
Dim mesx As Integer, aniox As Integer, I As Integer
Dim fechaux As Date
Set db = CurrentDb()
Set rst = db.OpenRecordset("tblpdpago")
mesx = Month(Me.cFacturaFecha)
aniox = Year(Me.cFacturaFecha)
fechaux = CDate(Day(Me.cFacturaFecha) & "/" & mesx & "/" & aniox)

For I = 1 To Me.cFacturaNumCuotas '<<<< Me.cantidaddecuotas


If mesx = 2 Then
If (Day(Me.cFacturaFecha)) > 28 Then
fechaux = CDate(28 & "/" & mesx & "/" & aniox)
Else
fechaux = CDate(Day(Me.cFacturaFecha) & "/" & mesx & "/" & aniox)
End If
Else
fechaux = CDate(Day(Me.cFacturaFecha) & "/" & mesx & "/" & aniox)
End If

While (Not IsNull(DLookup("Fecha", "Feriados", "Fecha = #" & Format(fechaux, "mm/dd/yyyy") & "#"))) Or (Weekday(fechaux) = vbSaturday) Or (Weekday(fechaux) = vbSunday)
fechaux = DateAdd("d", 1, fechaux)

Wend

With rst
.AddNew
.Idfactura = Me.cFacturaNumero
.fechafactura = Me.cFacturaFecha
.montofactura = Me.cFacturaMonto
.cantidaddecuotas = Me.cFacturaNumCuotas
.nrodecuota = I
.vencimiento = fechaux
.Update
End With

mesx = mesx + 1

If mesx = 13 Then
mesx = 1
aniox = aniox + 1
End If

Next I

rst.Close
db.Close
Set rst = Nothing
Set db = Nothing
DoCmd.DoMenuItem acFormBar, acRecordsMenu, 5, , acMenuVer70

End Sub

Ahora bien, esto me genera un plan de pagos (cuotas) de la siguiente manera (me funciona a la perfección todo el proceso):
Ejemplo:
Formulario1
Cuadros Independientes

cFacturaNumero cFacturaFecha cFacturaMonto cFacturaNumCuotas
123 01/01/2007 $100 3

Esto me genera en el sub formulario “tblpdpago” lo siguiente:

Sub Formulario “tblpdpago”
Campos

Idfactura fechafactura montofactura cantidaddecuotas nrodecuota vencimiento
123 01/01/2007 $100 3 1 01/01/2007
123 01/01/2007 $100 3 2 01/02/2007
123 01/01/2007 $100 3 3 01/03/2007

Ahora necesito sumar días extra a la fecha dada del primer vencimiento hasta el último vencimiento, ya genere un cuadro independiente que se llama (Dias_Extra) si la primer cuota que vence el 01/01/2007, y le sumo 5 dias extra a la fecha me debería dar la siguiente fecha 06/01/2007, y si ese día cae sabado o dimongo o feriado, me lo corra 1 dia mas (esta ultima parte ya la tengo resuelta en el código), y así sucesivamente con el resto de las cuotas en las que habría que sumar esos 5 días extra. Aclaración la idea de los dias a sumar no es fija en los dias, en una oportunidad podrian ser 5 o 10, o 101 por ejemplo.

Me han dicho que se puede, pero yo no logro hacerlo, ya que soy muy limitado en el conocimiento de códigos y su aplicación. Alguien tiene noción de cómo aplicarlo para lograr el objetivo?
Un Saludo y gracias por su tiempo.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Sumar días extra a las fechas de vencimiento en un plan de pagos

Publicado por Alejandro (4142 intervenciones) el 17/08/2023 18:25:20
Para agregar días extras a las fechas de vencimiento en tu plan de pagos, puedes modificar el código que ya tienes. En lugar de calcular la fecha de vencimiento en función del mes siguiente, simplemente agrega la cantidad de días extras que deseas a cada fecha de vencimiento.

Aquí está el código modificado para lograr esto:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
Public Sub cmdplandepagos_Click()
    Dim db As Object, rst As Object
    Dim mesx As Integer, aniox As Integer, I As Integer
    Dim fechaux As Date
    Dim diasExtras As Integer ' Número de días extras a sumar
    Dim fechaVencimiento As Date
 
    Set db = CurrentDb()
    Set rst = db.OpenRecordset("tblpdpago")
    mesx = Month(Me.cFacturaFecha)
    aniox = Year(Me.cFacturaFecha)
    fechaux = CDate(Day(Me.cFacturaFecha) & "/" & mesx & "/" & aniox)
    diasExtras = Val(Me.Dias_Extra) ' Obtener los días extras del cuadro independiente
 
    For I = 1 To Me.cFacturaNumCuotas
        fechaVencimiento = fechaux + diasExtras ' Sumar los días extras
 
        While (Not IsNull(DLookup("Fecha", "Feriados", "Fecha = #" & Format(fechaVencimiento, "mm/dd/yyyy") & "#"))) Or (Weekday(fechaVencimiento) = vbSaturday) Or (Weekday(fechaVencimiento) = vbSunday)
            fechaVencimiento = DateAdd("d", 1, fechaVencimiento)
        Wend
 
        With rst
            .AddNew
            .Idfactura = Me.cFacturaNumero
            .fechafactura = Me.cFacturaFecha
            .montofactura = Me.cFacturaMonto
            .cantidaddecuotas = Me.cFacturaNumCuotas
            .nrodecuota = I
            .vencimiento = fechaVencimiento
            .Update
        End With
 
        mesx = mesx + 1
 
        If mesx = 13 Then
            mesx = 1
            aniox = aniox + 1
        End If
 
    Next I
 
    rst.Close
    db.Close
    Set rst = Nothing
    Set db = Nothing
    DoCmd.DoMenuItem acFormBar, acRecordsMenu, 5, , acMenuVer70
End Sub

En este código, se agrega la variable `diasExtras` para almacenar la cantidad de días que deseas sumar a las fechas de vencimiento. Luego, se suma esta cantidad a la fecha de vencimiento calculada en la línea `fechaVencimiento = fechaux + diasExtras`.

Es importante destacar que la lógica de ajustar las fechas de vencimiento en caso de que caigan en un fin de semana o feriado se mantiene en este código, ya que ya tienes esa parte implementada.

Asegúrate de que el cuadro independiente "Dias_Extra" esté vinculado correctamente en tu formulario.

Con este código, podrás sumar días extras a las fechas de vencimiento en tu plan de pagos. Recuerda ajustar los nombres de los campos y controles según tu diseño específico.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar