** NORMAS DEL FORO **
Inicio del foro Inicio del foro > Access y VBA > Access y VBA
  Mensajes nuevos Mensajes nuevos RSS - Sumar dias entre dos fechas
  Preguntas frecuentes Preguntas frecuentes  Buscar en el foro   Eventos   Registro Registro  Iniciar sesion Iniciar sesion

Tema cerradoSumar dias entre dos fechas

 Responder Responder
Autor
Mensaje
jebcarlos Ver desplegable
Habitual
Habitual
Avatar

Unido: 16/Julio/2006
Localización: Colombia
Estado: Sin conexión
Puntos: 167
Enlace directo a este mensaje Tema: Sumar dias entre dos fechas
    Enviado: 03/Enero/2017 a las 18:28
Feliz año a todos mi inquietud es la siguiente tengo la siguiente tabla "tblinteres" con solo dos campos fecha (este el el campo principal) y tasa. LA fecha es el ultimo dia de cada mes desde el año 2008 al 31 de marzo 2017
así:
tblinteres
fecha tasa
31/01/2008 32,75%
29/02/2008 32,75%
31/03/2008 32,75%
30/04/2008 32,88%
31/05/2008 32,88%
30/06/2008 32,88%
31/07/2008 32,27%
31/08/2008 32,27%
30/09/2008 32,27%
31/10/2008 31,53%

he creado un formulario para calcular el valor de los interes a pagar por un monto con los siguientes campos independientes. txtvalor, txtfechaini, txtfechafin, cantdias,txtvrpago,Primedia, Ultimodia estos ultimos con las funciones de fecha de access calculo el primer y ultimo dia de cada fecha de la tabla tblinteres.  Tambien estan los campos fecha y tasa

En los campos txtvalor, txtfechaini y txtfechafin, se digitan los valores y los demas campos se calculan automaticamente.

El campo primerdia = SerieFecha(Año([Fecha]);Mes([Fecha]);1;0)
El campo ultimodia = SerieFecha(Año([Fecha]);Mes([Fecha])+1;0)

El campo cantdias lo calculo así: =SiInm([ultimodia]>[txtfechafin];[txtfechafin]-[primerdia];SiInm([txtfechaini] Entre [primerdia] Y [ultimodia];([ultimodia]-[txtfechaini]);SiInm([ultimodia]+1>[txtfechaini];([ultimodia]-[primerdia])+1;0)))

el campo txtvrpago= ([tasa]/365)*cantdias*txtvalor)

He creado un boton de comando para que me haga un filtro así:
Dim sfiltro As String

'sfiltro = "Fecha BETWEEN # " & Me.txtfechaini & " # AND # " & txtfechafin & " # "
 sfiltro = "Fecha BETWEEN # " & Me.txtfechaini & " # AND # " & DateSerial(Year(txtfechafin), Month(txtfechafin) + 1, 0) & " # "
 Me.Form.Filter = sfiltro
   
    ' Le decimos al subformulario que active el filtro
    ' que previamente hemos asignado.
    Me.Form.FilterOn = True

 
Sin embargo he tendio los siguientes problemas.

EL filtro funciona a medias ya que cuando fecha pongo las fechas txtfechaini y txtfechafin en diciembre de 2016 me filtra todos los meses del año.

Ademas de eso en la función para calcular los dias estoy casi seguro que me falta algo o esta mal construida.






Arriba
xavi Ver desplegable
Administrador
Administrador
Avatar
Terrassa-BCN

Unido: 10/Mayo/2005
Localización: Catalunya ||||
Estado: Sin conexión
Puntos: 11345
Enlace directo a este mensaje Enviado: 03/Enero/2017 a las 18:52
Por si acaso, las fechas SIEMPRE en formato mm/dd/yyyy.

Xavi, un minyó de Terrassa

Mi web
Arriba
jebcarlos Ver desplegable
Habitual
Habitual
Avatar

Unido: 16/Julio/2006
Localización: Colombia
Estado: Sin conexión
Puntos: 167
Enlace directo a este mensaje Enviado: 03/Enero/2017 a las 21:19
Xavi gracias por la respuesta he modificado el filtro así:
 sfiltro = "Fecha BETWEEN # " & Format([txtfechaini], "mm/dd/yyyy") & " # AND # " & DateSerial(Year(txtfechafin), Month(txtfechafin) + 1, 0) & " # "
Y funciona sin embargo al momento de sumar los dias entre el 12/12/2016 y el 15/12/2016 me da un total de 14 dias cuando deberian ser solo 3.
Vuelvo al punto del SiInm, me falta algo pero no se donde
Arriba
lbauluz Ver desplegable
Administrador
Administrador
Avatar

Unido: 29/Marzo/2005
Localización: Alcalá Meco
Estado: Sin conexión
Puntos: 2874
Enlace directo a este mensaje Enviado: 04/Enero/2017 a las 17:41
Hola jebcarlos

Yo diría que te falta el día de fecha fin, solo has puesto año y mes.


Un saludo

Luis
Quod natura non dat, Salmantica non præstat
Arriba
xavi Ver desplegable
Administrador
Administrador
Avatar
Terrassa-BCN

Unido: 10/Mayo/2005
Localización: Catalunya ||||
Estado: Sin conexión
Puntos: 11345
Enlace directo a este mensaje Enviado: 04/Enero/2017 a las 18:25
Luis, el 0 del final es el dia. Un 0 es el dia anterior al 1 por lo que, al sumar 1 al mes, lo que estas consiguiendo es el dia del final de mes:

DateSerial(2017, 1+1,0) --> 31/01/2017
DateSerial(2017,1,0) --> 31/12/2016

jebcarlos, por si acaso formatea también la fecha final creada con el DateSerial.

Xavi, un minyó de Terrassa

Mi web
Arriba
jebcarlos Ver desplegable
Habitual
Habitual
Avatar

Unido: 16/Julio/2006
Localización: Colombia
Estado: Sin conexión
Puntos: 167
Enlace directo a este mensaje Enviado: 17/Julio/2017 a las 19:10
Perdon por la tardanza en responder me funciona bien como me indico xavi.  Cerrar el hilo
Arriba
 Responder Responder
  Compartir tema   

Ir al foro Permisos de foro Ver desplegable