Access - Valor de fecha en función del valor del campo

   
Vista:

Valor de fecha en función del valor del campo

Publicado por Luis (6 intervenciones) el 06/05/2016 09:54:46
Buenos días a todos. Soy nuevo en este foro y tambien novato en access. Estoy intentando hacer una consulta ampliada de una tabla (Empleados). En la tabla tengo dos campos tipo fecha, "Antigüedad" y "Fin Contrato". En la consulta ampliada quiero crear dos campos calculados "Inicio Peridodo" y "Fin Periodo". En el primero cuando un empleado tiene una fecha de antigüedad menor al 01/01/ año en curso, quiero que en "inicio de periodo" ponga 01/01/del año en curso y si es superior, el dato que tiene el campo.
Lo mismo con el campo calculado "fin del periodo", si en "fin contrato" esta en blanco por ser un trabajador fijo, ponga 31/12/año en curso y si es un trabajador con contrato limitado, la fecha del campo "Fin Contrato".
He intentado usar la Función SiInm, pero no consigo en el caso de que tenga que poner un valor direrente al del campo original, me aparece el valor en blanco.
Como veis soy muy nuevo en access.
Un saludo de ante mano y gracias.
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

Valor de fecha en función del valor del campo

Publicado por Enrique Heliodoro (1663 intervenciones) el 06/05/2016 10:17:53
Publica lo que has intentado, corrigiendo los (tus) errores aprenderás mas que simplemente copiando .....
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

Valor de fecha en función del valor del campo

Publicado por Luis (6 intervenciones) el 06/05/2016 10:33:57
Hola Enrique tienes razón. No se muy bien como publicar en el foro. Te copio el código SQL de la consulta. No se si se hace así.


SELECT EMPLEADOS.[id Empleado], EMPLEADOS.[Nombre Empleado], EMPLEADOS.Antigüedad, EMPLEADOS.Fin_Contrato, IIf([Antigüedad]<1/1/2016,1/1/2016,[Antigüedad]) AS [Inico Periodo], IIf([EMPLEADOS]![Fin_Contrato]=0,[EMPLEADOS]![Fin_Contrato]=Date(),[EMPLEADOS]![Fin_Contrato]) AS [Fin Periodo], ([Fin Periodo]-[Antigüedad])/365 AS AÑOS
FROM EMPLEADOS;
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

Valor de fecha en función del valor del campo

Publicado por Enrique Heliodoro (1663 intervenciones) el 06/05/2016 19:05:30
El error es 'de bulto', no tratas a los datos como se merecen ....

Esto:
1/1/2016
ES UN NUMERO (exactamente una operación aritmética de la que resultara un numero)

Esto:
#1/1/2016#
Es un dato de fecha

Para tratar con fechas, un consejo:

Access (de forma interna = VBA) utiliza el formato americano :mes/dia/año, en Europa (y mas lugares) se utiliza: Dia/mes/Año y en Japón (si mis informaciones no son erróneas) utilizan la idónea para ordenar: Año/Mes/Dia

Pero para Access lo real e interno es UN NUMERO que tiene la ventaja de que es universal
.- La función CDATE convierte un texto en cualquiera de los formatos regionales en un dato de fecha
.- La función CDBL convierte cualquier fecha en el numero correspondiente (se utiliza un doublé, porque la parte entera son días y la decimal horas).

Hoy (6/5/2016) o (6 mayo 2016) o cualquiera de esas versiones se convertiría a un dato de fecha con:
= CDate("6/5/2016")
.- o asi
=CDate("6 Mayo de 2016")

Y en numero asi:
=Cdbl(CDate("6/5/2016"))

En la ventana de inmediato:
? Cdbl(CDate("6/5/2016"))
42496

? Cdbl(CDate("6 mayo 2016"))
42496

Tomandola del sistema

? Cdbl(Date)
42496

Lo mismo pero con parte horaria (Now = Ahora)
?cdbl(Now)
42496,7942824074
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

Valor de fecha en función del valor del campo

Publicado por Luis (6 intervenciones) el 07/05/2016 14:26:55
Muchas gracias Enrique, como puedes ver estoy empezando en access. No sabia como hay que hacer el tratamiento de las fechas en access y despues de lo que me has escrito me queda más claro.
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