Access - dif de fecha quitando los festivos ayuda con el codigo

   
Vista:

dif de fecha quitando los festivos ayuda con el codigo

Publicado por guillermo (8 intervenciones) el 01/02/2012 14:11:59
estimados, tengo este codigo que copie de angelessebas el cual al aplicarlo me da desborde ( y eso que le cargue un solo dato nada mas en la tabla para que calcule la diferencia de dias. me podran ayudar?
Primero creamos una tabla Festivos (Festivo, tipo fecha) en la que meteremos los festivos (no los sábados y domingos)
ya que estos los calcularemos con la función WeekDay (DíaSemana) que nos devuelve el nº del día de la semana

La función sería:

Function DiferenciaFechas()
' Declaramos las variables

Dim db as Database
Dim rs as recordset
Dim vFecha as Date
Dim var as Integer

' Activamos la Base de Datos

Set db=Currentdb

' Generamos el Recordset

Set rs=db.Openrecordset("Select Fecha1, Fecha2, Dias From Tabla1")

' Recorremos el recordset con Do While ... Loop

Do While Not rs.Eof

var=0
vFecha=rs!Fecha1

' Recorremos el intervalo de fechas entre Fecha1 y Fecha2

Do While vFecha
' Vemos si el día de la semana es <> de 6 ó 7 (sábado o domingo)

Is Weekday(vFecha,0)<>6 And Weekday(vFecha,0)<>7 Then

' Comprobamos que la fecha no esté en la tabla Festivos

If IsNull(DLookup("[Festivo]","[Festivos]","[Festivo]=cDate('" & vFecha & "')")) = True Then
' Sí no está acumulamos el día en la variable var

var=var+1
End If
End If

' Pasamos a la fecha siguiente del intervalo

vFecha=vFecha+1
Loop

' Actualizamos el campo dias

rs.Edit
rs!Dias=var
rs.Update

' Pasamos al siguiente registro del recordset

rs.MoveNext
Loop

End Function
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

dif de fecha quitando los festivos ayuda con el codigo

Publicado por angelessebas (208 intervenciones) el 01/02/2012 18:20:42
Hola,

cuando te dá el error, picas en depurar y... ¿en que linea te da el error?

Saludos, Angeles
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

dif de fecha quitando los festivos ayuda con el codigo

primero en esta linea
Is Weekday(vFecha,0)<>6 And Weekday(vFecha,0)<>7 Then
Me di cuenta que no es IS sino que deberia ir IF lo cual lo solucione
Pero al correr me da desbordameito y me marca esta linea
var=var+1

podras ayudarme?
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

dif de fecha quitando los festivos ayuda con el codigo

Publicado por angelessebas (208 intervenciones) el 01/02/2012 19:25:43
Hola,

Llevas toda la razón, si te fijas he puesto:

Do While vFecha

empezando vFecha igual a Fecha1 y lo voy incrementando pero... hasta cuando? le falta la condición:

Do While vFecha<rs!Fecha2

sino el bucle es infinito y claro llega un momento en que la variable, al ir aumentando se desborda.

Ahora mismo lo corrijo en la página.

Gracias por tu aportación, saludos, Angeles

Página supuestos y soluciones en access: http://angelessebas.es/
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

dif de fecha quitando los festivos ayuda con el codigo

de nada angeles pero fue de casualidad, dado que nesecitaba ese codigo, soy nuevo y muy basico en esto.
No me pasarias el codigo completo como quedaria con ese cambio?
Estoy a full con tu pagina es muy buena
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

dif de fecha quitando los festivos ayuda con el codigo

Publicado por angelessebas (208 intervenciones) el 01/02/2012 19:38:43
Hola,

Aquí te mando el código (aunque ya lo resolvi en la página, resulta que estaba bien escrito, pero en lenguaje asp, que es el que utilizo en la página, el simbolo < lo reconoce como scrip y no se visualiza, con un espacio lo he resulto):

Function DiferenciaFechas()
' Declaramos las variables

Dim db as Database
Dim rs as recordset
Dim vFecha as Date
Dim var as Integer

' Activamos la Base de Datos

Set db=Currentdb

' Generamos el Recordset

Set rs=db.Openrecordset("Select Fecha1, Fecha2, Dias From Tabla1")

' Recorremos el recordset con Do While ... Loop

Do While Not rs.Eof

var=0
vFecha=rs!Fecha1

' Recorremos el intervalo de fechas entre Fecha1 y Fecha2

Do While vFecha < rs!Fecha2

' Vemos si el día de la semana es <> de 6 ó 7 (sábado o domingo)

If Weekday(vFecha,0)<>6 And Weekday(vFecha,0)<>7 Then

' Comprobamos que la fecha no esté en la tabla Festivos

If IsNull(DLookup("[Festivo]","[Festivos]","[Festivo]=cDate('" & vFecha & "')")) = True Then
' Sí no está acumulamos el día en la variable var

var=var+1
End If
End If

' Pasamos a la fecha siguiente del intervalo

vFecha=vFecha+1
Loop

' Actualizamos el campo dias

rs.Edit
rs!Dias=var
rs.Update

' Pasamos al siguiente registro del recordset

rs.MoveNext
Loop

End Function


Saludos, Angeles
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

dif de fecha quitando los festivos ayuda con el codigo

angeles con lo nuevo que comentas y que pusiste en la pagina de este error

vFecha = rs!Fecha1
uso indevido del null
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

dif de fecha quitando los festivos ayuda con el codigo

Publicado por angelessebas (208 intervenciones) el 01/02/2012 20:27:50
Hola,

Eso es porque no tienes ninguna fecha metida en el campo, todos los registros tienen que estar llenos, sino ¿como vas a calcular la diferencia de días?

Saludos, angeles
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

dif de fecha quitando los festivos ayuda con el codigo

Publicado por guillermo javier couceiro (8 intervenciones) el 02/02/2012 11:42:58
Angeles, estan llenos los campos, asi y todo me da uso indevido del null
te hago una consulta mas, soso una genia total!, tengo un campo fecha que importe en este formato 18 jun 2012 12;00 am hay alguna forma de pasarlo al formato fecha 18/01/2012 ? intente cambiando las propiedades del campo y no puedo siempre queda igual, tengo que ir a excel, extraer, concaternar todo un engorro.....tendras alguna solucion magica? Miles de Gracias
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

dif de fecha quitando los festivos ayuda con el codigo

primero en esta linea
Is Weekday(vFecha,0)<>6 And Weekday(vFecha,0)<>7 Then
Me di cuenta que no es IS sino que deberia ir IF lo cual lo solucione
Pero al correr me da desbordameito y me marca esta linea
var=var+1

podras ayudarme?
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