Access - Suma de dias

 
Vista:

Suma de dias

Publicado por Eduardo (3 intervenciones) el 17/08/2007 14:05:20
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.
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 fechas de cuotas en formulario

Publicado por Alejandro (4142 intervenciones) el 17/08/2023 20:33:45
Para lograr sumar días extra a las fechas de las cuotas en tu formulario en Access, puedes modificar el procedimiento del botón "cmdplandepagos_Click" que has proporcionado. Aquí está el código modificado que realiza esta tarea:

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
48
49
50
51
52
53
54
55
56
57
58
59
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 diasExtra As Integer  ' Variable para almacenar los días extras
    Set db = CurrentDb()
    Set rst = db.OpenRecordset("tblpdpago")
    mesx = Month(Me.cFacturaFecha)
    aniox = Year(Me.cFacturaFecha)
    fechaux = CDate(Day(Me.cFacturaFecha) & "/" & mesx & "/" & aniox)
    diasExtra = Me.Dias_Extra  ' Obtener los días extras desde el cuadro de texto
 
    For I = 1 To Me.cFacturaNumCuotas
 
        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
 
        ' Sumar días extras a la fecha
        fechaux = DateAdd("d", diasExtra, fechaux)
 
        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

En este código, hemos agregado la variable "diasExtra" para almacenar la cantidad de días extras que deseas sumar a cada fecha de vencimiento. Luego, utilizamos la función `DateAdd("d", diasExtra, fechaux)` para sumar esos días extras a la fecha de vencimiento.

Asegúrate de tener el cuadro de texto "Dias_Extra" en tu formulario donde el usuario pueda ingresar la cantidad de días extras deseada para cada cuota.

Espero que esta modificación sea útil para tu caso, Eduardo.
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