Access - Actualización de un campo

   
Vista:
Imágen de perfil de heaj

Actualización de un campo

Publicado por heaj (33 intervenciones) el 23/06/2008 17:06:45
Explico mi problema.

Tengo una tabla llamada "Profesores", e incorpora varios campos, entre ellos los campos FECHADEINGRESO, SUSPENDIDO y FECHADESUSPENSION. En un formulario que nombré "Alta de Profesor" ingreso los datos personales del profesor y de los campos mencionados anteriormente solo ingreso el de FECHADEINGRESO. En una consulta que nombré "Profesores Todo" calculo automaticamente la antiguedad y la almaceno en el campo "ANTIGUEDAD" de esta consulta.

En otro formulario que nombré "Editar Profesor" coloque una casilla de verificación (la cual nombré "EditSuspendido") para saber cuando está suspendido el profesor.

Si se activa la casilla de "EditSuspendido" esto activa un campo llamado "EditFechadeSuspension" y entonces puedo ingresar la fecha en la cual fue suspendido el profesor. Esto modifica la antigüedad del mismo. Cuando presiono el botón "Guardar" en mi formulario se lleva a cabo una consulta de actualización para la tabla "Profesores" en donde los campos SUSPENDIDO (Tipo Si/No) y FECHADESUSPENSION se actualizan.

El problema es el siguiente. En la consulta "Profesores Todo" la antigüedad se calcula de la siguiente manera: "= (Date() - CVDate[FECHADEINGRESO]) / 365" para que me muestre la antigüedad en años. Si pueden observar en este cálculo no aparece FECHADESUSPENSION para el caso en el cual el profesor fue suspendido.

Lo que quisiera hacer es lo siguiente: Que en la consulta "Profesores Todo" y en el campo ANTIGUEDAD pudiera poner un condicionante que me permitiera al abriir la consulta verificar si el profesor este suspendido, si lo esta, entonces la antigüedad se calcularía de la siguiente manera: "=(CVDate[FECHADESSPENSION] - CVDate[FECHADEINGRESO])/365". Esto congelaría la antigüedad cuando el profesor ha sido suspendido.

Una opción fue agregar directamente el campo ANTIGUEDAD a la tabla "Profesores" y hacer una consulta de actualización día con día para actualizar el campo y tener la antiguedad correcta, pero la verdad no me agrada mucho esta idea.

Espero puedan ayudarme proponiendome un camino más corto. Saludos!!!
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

RE:Actualización de un campo

Publicado por pacopaz (50 intervenciones) el 23/06/2008 18:10:32
Prueba con esto:

iif(isnull(FECHADESSPENSION), (Date() - CVDate[FECHADEINGRESO]) / 365, (CVDate[FECHADESSPENSION] - CVDate[FECHADEINGRESO])/365)

Espero que te sirva.

Saludos.
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
Imágen de perfil de heaj

RE:Actualización de un campo

Publicado por heaj (33 intervenciones) el 23/06/2008 20:21:01
El detalle es que quiero hacerlo en una consulta con el generador de expresiones. No se si pueda hacerse. Dentro de formularios ya pude hacerlo.
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

RE:Actualización de un campo

Publicado por pacopaz (50 intervenciones) el 23/06/2008 21:32:10
Lo que te pongo en la respuesta lo puedes hacer en la pantalla de sql. Luego, si quieres, puedes regresar a la pantalla de diseño para que veas que código te generó.
Lo mejor es que te empieces a desconectar un poco de la generación automática de código para que tú emieces a programar directamente, aunque reconozco que es más fácil hacer la generación que programar directamente en sql, pero tus prácticas mejorarán, además de que estarías más preparado para migrar a otros manejadores de bases de datos.

Saludos.
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
Imágen de perfil de heaj

RE:Actualización de un campo

Publicado por heaj (33 intervenciones) el 23/06/2008 22:22:21
Mira, se un poco de código en SQL. La mayoria de las consultas las hago más rapido con el código que con el asistente. Pero hay algunas cosas que no se hacer aún. Mi consulta tiene el siguiente código:

SELECT Profesores.PROFESOR, Profesores.RFC, Profesores.SEXO, Profesores.FECHADENACIMIENTO, (Date()-[FECHADENACIMIENTO])/365 AS EDAD, Profesores.FECHADEINGRESO, (Date()-[FECHADEINGRESO])/365 AS ANTIGUEDAD, Profesores.TITULOACTUAL, Profesores.GRADOACTUAL, Profesores.CATEGORIA, Profesores.SUSPENDIDO, Profesores.FECHADESUSPENSION, Profesores.CONLICENCIA, Profesores.FECHADETERMINO, Profesores.IQ, Profesores.QFB, Profesores.BIOLOGIA, Profesores.TELEFONO, Profesores.CELULAR
FROM Profesores
ORDER BY Profesores.PROFESOR;

No se en donde meter el código que tu me diste, pero bueno seguire intentandolo.

Muchas 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

RE:Actualización de un campo

Publicado por pacopaz (50 intervenciones) el 23/06/2008 23:15:59
Va:

SELECT Profesores.PROFESOR, Profesores.RFC, Profesores.SEXO, Profesores.FECHADENACIMIENTO, (Date()-[FECHADENACIMIENTO])/365 AS EDAD, Profesores.FECHADEINGRESO, iif(isnull(FECHADESSPENSION), (Date() - CVDate[FECHADEINGRESO]) / 365, (CVDate[FECHADESSPENSION] - CVDate[FECHADEINGRESO])/365) AS ANTIGUEDAD, Profesores.TITULOACTUAL, Profesores.GRADOACTUAL, Profesores.CATEGORIA, Profesores.SUSPENDIDO, Profesores.FECHADESUSPENSION, Profesores.CONLICENCIA, Profesores.FECHADETERMINO, Profesores.IQ, Profesores.QFB, Profesores.BIOLOGIA, Profesores.TELEFONO, Profesores.CELULAR
FROM Profesores
ORDER BY Profesores.PROFESOR;

Espero que te sirva.

Saludos.
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
Imágen de perfil de heaj

RE:Actualización de un campo

Publicado por heaj (33 intervenciones) el 23/06/2008 23:33:02
Ya quedo, mushisimas gracias!!!, mushisimas gracias!!!, mushisimas gracias!!!, mushisimas gracias!!!, mushisimas gracias!!!, mushisimas gracias!!!, mushisimas gracias!!!, mushisimas gracias!!!, mushisimas gracias!!!, mushisimas 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