Inicio > Visual Basic > ifrancoz > Manejo de meses de 30 dias

Manejo de meses de 30 dias

Experto:
Usuario:
Fecha: 17/04/2009
Valoración: (4,00 sobre 5) Categoría: Visual Basic
17/04/2009
tavo320, usuario preguntando en Visual Basic
Usuario
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 depues y asi sucesivamente, pero tomando meses de 30 dias.
Gracias por la ayuda
17/04/2009
tavo320, experto respondiendo en Visual Basic
Experto
Buenas noches :
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 !
17/04/2009
tavo320, usuario preguntando en Visual Basic
Usuario
Buenos dias:
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 dias 1, es decir 1 de abril, 1 de mayo, etc, independiente de si el mes tiene 30 o 31 dias. Necesito trabajar los años de 360 dias y todos los meses de 30.
De nuevo gracias
 
17/04/2009
tavo320, usuario preguntando en Visual Basic
Usuario
Quisera 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 DIAS REALES DEL MES Y NECESITO QUE LOS DIAS DE VENCIMIENTO NO ME CAMBIEN
 
 
17/04/2009
tavo320, experto respondiendo en Visual Basic
Experto
Buenos días :
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 !
17/04/2009
tavo320, usuario preguntando en Visual Basic
Usuario
Muchisimas gracias, con tu ayuda pude solucionar el problema. Definitivamente gracias
Enlaces patrocinados