Ayuda con rutina en visual basic con base de datos access

Antes que nada muchas gracias a quien me pueda ayudar. Estoy implementando una base de datos en Access y estoy tratando de implementar una pequeña rutina para calcular una serie de fechas siguientes a las de hoy. (Vencimientos de facturas) y necesito que esos vencimientos sean un mes después y así sucesivamente, pero tomando meses de 30 días.
Gracias por la ayuda

1 Respuesta

Respuesta
1
Para esto puede utilizar la función DateAdd de la siguiente forma :
Dim Fecfac as date
Dim Fecvto as date
Fecvto = Format(DateAdd("d", 30, Fecfac), "yyyy/mm/dd")
Con lo anterior si una factura se expide el 1 de marzo su vencimiento sería el día 31 de marzo.
Suerte !
Buenos días:
Antes que nada quiero agradecerte por dedicar tiempo a mi pregunta. Creo que no exprese bien la pregunta y por ello quiero aclararte algo: el caso es que si la primera factura tiene fecha 1 de marzo, necesito generar las siguientes fechas de vencimiento los días 1, es decir 1 de abril, 1 de mayo, etc, independiente de si el mes tiene 30 o 31 días. Necesito trabajar los años de 360 días y todos los meses de 30.
De nuevo gracias
Quisiera mostrarte la rutina que estoy tratando de implementar:
Private Sub Comando34_Click()
'Declara variables
Dim dbs
Dim rst
Dim meses, Cred, cuot, saldo, contador, saldocre
'Establece las tablas a trabajar
Set dbs = CodeDb
Set rst1 = dbs.OpenRecordset("Plan de Pagos")
Set rst2 = dbs.OpenRecordset("Contratos")
'Define las variables
meses = rst2("termino")
contador = 3
' Agrega un mes a la fecha actual
fecha = DateAdd("m", 1, Date)
'Inicia bucle
Do While contador <= meses 'Mientras no se cumplan los plazos
'Agrega nuevo registro
rst1.AddNew
'Coloca valores en los campos
'rst("Numeros") = Me.numero
'rst("Credto total") = Me.Credito
'rst("mes") = contador
'rst("cuota") = cuot
rst1("Fecha de Pago") = fecha
rst1("Nro Contrato") = rst2("Nro Contrato")
'Actualiza recordset
rst1.Update
'Cred = Cred - cuot
contador = contador + 1
fecha = fecha + 30
Loop
'refrezca el subformulario para que se vean los ingresos
DoCmd.RunCommand acCmdRemoveFilterSort
' estima error
On Error Resume Next
rst1.Close: Set rst = Nothing
dbs.Close: Set dbs = Nothing
End Sub
El problema esta en que cuando sumo un mes, la rutina tiene en cuenta los días reales del mes y necesito que los días de vencimiento no me cambien
Creo que la pregunta aún siogue algo confusa.
Si lo que quiere es generar la fecha de vencimiento un mes después independiente de si el mes tiene 30 o 31 días entonces debe utilizar:
Fecvto = Format(DateAdd("m", 1, Fecfac), "yyyy/mm/dd")
Ahora si lo que se quiere es que el vencimiento sea el día 1 del mes siguiente independiente del día de su expedición entonces debería utilizar :
Fecvto = Format(DateAdd("m", 1, Fecfac), "yyyy/mm/dd")
Fecvto = Format(DateAdd("d", (-Day(Fecvto) + 1), Fecvto), "yyyy/mm/dd")
Creo que con alguna de estas combinaciones puede solucionar su inquietud.
Suerte !

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas