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.
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


0