Como restarle a una fecha días en una consulta

Tengo una tabla que entre otros datos tengo campos que se llama:

Fecha_Salida_Vac ( campo fecha)

Fecha_Regr_Vac (campo fecha)

Fecha Pago: (campo fecha)

Tengo que restarle al campo Fecha_Salida_Vac, 7 días hacia atrás, y DE SER posible si cae en esa fecha días sábados y domingos NO tenerlo en cuenta

2 Respuestas

Respuesta
2

Utiliza la función AgregFecha() (o DateAdd()) para calcular la nueva fecha.

NuevaFecha: AgregFecha("d";-7;[Fecha_Salida_Vac])

Para saber el día de la semana tiene la función ParcFecha() (o DatePart()). Por ejemplo:

DiaSemana: ParcFecha("w";[Fecha_Salida_Vac])

Si te devuelve 1 es que es domingo, y si te devuelve 7 es que es sábado.

Sabiendo esto, puedes hacer así el capo de tu consulta:

NuevaFecha: SiInm(ParcFecha("w";AgregFecha("d";-7;[Fecha_Salida_Vac]))=1;AgregFecha("d";-9;[Fecha_Salida_Vac]);SiInm(ParcFecha("w";AgregFecha("d";-7;[Fecha_Salida_Vac]))=7;AgregFecha("d";-8;[Fecha_Salida_Vac]);AgregFecha("d";-7;[Fecha_Salida_Vac])))

O puedes usar la función que explican en este enlace: https://support.microsoft.com/es-es/kb/115489 

Si no te funciona con "w" la función ParcFecha, usa "e".

Aqui tienes un ejemplo de cómo sería

No me quedó nada claro lo que pretendes hacer, ni en que quieres que te ayude.

Si me lo explicas mejor, y si puede ser con un ejemplo, intento ayudarte.

disculpa tengo una duda porque la web estaba algo lenta te llego lo ultimo que te envié con respecto al tema

gracias

Ok. En principio para no hacer, tan complicado con explicativo.

Fíjate, en la base que te mande le agregue campos.

A tu consulta (consulta1) fíjate si les podes poner todos esos campos que yo le agregue a la tabla y que fusione como andaba en el primer ejemplo que me enviaste. Siempre hablando de la consulta1.

Y mándamela, así te puedo explicar el resto.

Así vamos paso a paso para no hacer tanto lió y que vos no pierdas tanto tiempo, Es posible que con ese arreglo que me habas yo pueda seguir adelante, y si no te explico el resto del problema

Gracias

Si te parece bien

http://www.filebig.net/files/7T5HP8AuNn 

No entiendo dónde tienes dificultad en hacer eso, es simplemente abrir la consulta en modo diseño, y añadir los campos de la tabla.

https://www.dropbox.com/s/a73h85h8k5u9a1i/jorgeruben%20v.4.mdb?dl=0 

En principio disculpa por lo anterior, tenia mi configuración regional en (,) y no en (; ) por eso era el error de no poder agregar nada.te envío de nuevo la base para que me saque de otro apuro necesito sacar entre (cantidad de días vac), y los días tomados (eso lo agregue yo), Cuantos días le quedan para tomarse.Lo quise hace en el informe y no me salio, y en la consulta menos., fíjate si podes darme una mano con eso haber donde tengo el erro ya sea en el informe en el cuadro de texto que le agregue o es más fácil por la consulta gracias

Si lo haces en la consulta:

DiasRestantes: [Cantidad de dias Vac]-[Dias Tomados]

DiasRestantes: [Cantidad de dias Vac]-([Fecha_Regr_Vac]-[Fecha_Salida_Vac])

Si lo haces directamente en el informe: =[Cantidad de días Vac]-[Días Tomados]

No sé qué te llevó a usar la función Suma para hacer el cálculo...

¡Gracias! ok gracias la función suma porque copie de otro informe, gracias pruebo con esto , y nuevamente gracias por todo.-

ok  fusiona todo , gracias nuevamente

Me alegra oírlo. Hasta otra!

hola me surgió un inquietud/problema , te podrías fijar nuevamente en la base que te envió

gracias , te adjunto un explicativo y la base

https://www.dropbox.com/s/4xtqpxlyr0zcccg/explicativo.txt?dl=0 

https://www.dropbox.com/s/6se0k71k5v0i195/jorgeruben%20v.5.mdb?dl=0 

si es necesario te hago la pregunta nueva por la web  y pongo tu nombre

gracias

Las consultas pueden operar con los campos de un mismo registro, pero no entre dos registros distintos (salvo las de totales, pero tampoco es la solución a tu problema)

Se me ocurren dos posibles soluciones:

1º/ Que al crear el nuevo registro (por ejemplo cuando coje 11 días), usando DBúsq sobre la consulta rellenes el campo "Dias de vacaciones" con el valor del campo calculado "Dias restantes". Si en algún momento del año le suben los dias de vacaciones, se lo has de sumar al último registro o en el nuevo que pida vacaciones.

2º/ (En mi opinión la mejor solución) Contabilizar los días de vacaciones en otra tabla. Sería algo así:

En tu tabla con los datos del empleado tienes un campo "Dias Vacaciones" que serán los días que le corresponden en cada momento. Si le varían, lo modificas aqui.

Una tabla TVacaciones, en la que pondrías el resto de campos relativos a las vacaciones (dias pedidos, fecha salida, observaciones...) Las relacionarías 1:N

El resto de campos los calcularías en una consulta (fecha regreso, días restantes...)

Además, yo haría una consulta de totales, agrupando por trabajador y año, para saber los días que lleva disfrutado y los pendientes, y la consultaría antes de registrar nuevas vacaciones para que no se pase de días.

Si necesitas más aclaraciones, por favor, hazlo en una nueva pregunta, que nos estamos desviando del tema original.

Respuesta
1

Jorge: Para solo obtener una Fecha - 7 días, es fácil.

En la Tabla añade un Campo calculado. Ejemplo FechaAviso, y cuando te salga el generador de expresiones, le pones sin =

[Fecha_Salida_Vac]-7

En cambio, para que sondee si es Sábado, Domingo se ha de hacer una Función especifica. Saludos >> Jacinto

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas