DSum en una consulta |
Responder |
Autor | |
Adrianet
Habitual Unido: 26/Marzo/2015 Localización: Valencia Estado: Sin conexión Puntos: 135 |
Tema: DSum en una consulta Enviado: 31/Enero/2023 a las 15:51 |
Hola amigos del foro, estoy diseñando una consulta para detectar que trabajadores no tienen horas en todo el mes pero no ofrece el resultado deseado,.... Tenemos dos tablas: Personal, HorasFichajes ambas relacionadas por el campo CodTrab En diseño de
consulta tenemos estos campos: CodTrab,
Apellidos, Nombre, …… que
pertenecen a la tabla Personal
En la
consulta, añado un campo calculado y pongo esta expresión: HorasMes:
DSuma("[totalhoras]";"[horasfichajes]";"[codtrab]=
'" & [horasfichajes].[codtrab] & "'") Para cada codtrab nos devuelve la suma del campo “totalhoras” de la tabla “HorasFichajes Pero la
consulta sólo ofrece los registros de Personal que tienen horas, es decir, los
que tiene en la tabla HorasFichajes, pero no es ese el objetivo buscado. Tal vez, no estoy realizando un buen diseño de la consulta o los criterios no son correctos, ,,, Agradecería que me indicasen donde estoy fallando, o que es lo que me falta poner. Nota: este caso se parece al típico ejemplo de "artículos de la tienda sin ventas en el mes" es decir, partiendo de los códigos de artículos y las ventas registradas por artículo, saber que productos no han tenido ninguna venta. Lo leí hace mucho tiempo, pero no me acuerdo de cual era la solución que le daban. Gracias amigos, y un saludo. |
|
Mihura
Ver perfil usuario
Enviar mensaje privado
Ver los mensajes del usuario
Visite la página de los usuarios
Añadir a la lista de amigos
Administrador Unido: 06/Mayo/2005 Localización: En la dehesa Estado: Sin conexión Puntos: 14025 |
Enviado: 31/Enero/2023 a las 15:59 |
Por un lado, yo haría una consulta que obtuviera las horas del mes agrupadas por trabajador.
Esta consulta la relacionamos con la tabla trabajadores (por id del mismo) y aquellos que no tengan suma de horas (ojo que serán nulos) serán los que necesitas. |
|
Adrianet
Habitual Unido: 26/Marzo/2015 Localización: Valencia Estado: Sin conexión Puntos: 135 |
Enviado: 31/Enero/2023 a las 16:39 |
Hola Mihura, gracias por responder La consulta
la he llamado 00_HorasTot1, y es una consulta de totales: CodTrab,
SumadeTotalhoras Luego creo
una nueva consulta con la consulta anterior y la tabla Personal, …. SELECT [00_HorasTot1].codtrab, [00_HorasTot1].SumaDeTotalHoras, Personal.APELLIDOS, Personal.NOMBRE FROM 00_HorasTot1 INNER JOIN Personal ON
[00_HorasTot1].codtrab = Personal.CODTRAB; Pero siguen saliéndome los mismos registros que antes, todos con horas, no aparece ninguno sin horas. . . . |
|
Mihura
Ver perfil usuario
Enviar mensaje privado
Ver los mensajes del usuario
Visite la página de los usuarios
Añadir a la lista de amigos
Administrador Unido: 06/Mayo/2005 Localización: En la dehesa Estado: Sin conexión Puntos: 14025 |
Enviado: 31/Enero/2023 a las 17:09 |
Tienes que relacionar la tabla Personal con horas ... y ademas con LEFT JOIN, si pones un INNER JOIN solo te mostrará los registros con datos.
|
|
Adrianet
Habitual Unido: 26/Marzo/2015 Localización: Valencia Estado: Sin conexión Puntos: 135 |
Enviado: 31/Enero/2023 a las 17:50 |
Perfecto, solucionado, y además le pongo en criterio: ESTADO = "Alta" Sumadetotalhoras = es nulo y así visualizamos directamente los que nos interesan, (los que estando de alta no tienen suma de horas) SELECT
Personal.CENTRO, Personal.CODTRAB, Personal.APELLIDOS, Personal.NOMBRE,
[00_HorasTot1].SumaDeTotalHoras, Personal.ESTADO FROM Personal LEFT JOIN 00_HorasTot1 ON
Personal.CODTRAB = [00_HorasTot1].codtrab WHERE
((([00_HorasTot1].SumaDeTotalHoras) Is Null) AND
((Personal.ESTADO)="Alta")); Esta consulta me va ser de mucha utilidad, ya que así, con un clic chequeamos los trabajadores que no tienen horas, en un momento determinado del transcurso del mes. Muchas gracias por tu ayuda Mihura. Saludos. Se puede cerrar el hilo. |
|
Responder | |
Tweet
|
Ir al foro | Permisos de foro Usted No puede publicar nuevos temas en este foro Usted No puede responder a temas en este foro Usted No puede borrar sus mensajes en este foro Usted No puede editar sus mensajes en este foro Usted No puede crear encuestas en este foro Usted No puede votar en encuestas en este foro |