Error en consulta división por 0 access

Tengo una BD en access y en ella una tabla que posee un campo Cantidad1 y Cantidad2 que son la cantidad de trabajadores que laboró en el turno diurno(Cantidad1) y turno Nocturno(Cantidad2), además de otros campos.
A ella se le hace una consulta para seleccionar los campos que necesito que pasen al reporte final, entre ellos está Cantidad1 y Cantidad2 y además el % de Nocturnidad que no es más que Cantidad2/Cantidad1*100.
Hice lo siguiente:
SELECT BD.Descripcion, Sum(BD.Cantidad1) AS T1, Sum(BD.Cantidad2) AS T2, (T2/T1)*100 AS Nocturnidad   ....  y otras cosas más que seleccioné FROM BD etc, etc...
Esto genera una consulta donde existe una columna denominada Nocturnidad que tiene el resultado de (T2/T1)*100, que lógicamente si en el Turno diurno no hubo nadie, la división da error y en la consulta se pone ·Error y cuando sale el reporte en esa columna pone Error dando la apariencia de que hay problemas.
Que puedo hacer para que en ese caso no ponga nada.

1 Respuesta

Respuesta
En la consulta tendrás que poner la condición de que la suma de cantidad1 sea <>0:
SELECT BD.Descripcion, Sum([cantidad2])/Sum([Cantidad1]) AS Expr1, Sum(BD.Cantidad1) AS SumaDeCantidad1
FROM BD
GROUP BY BD.Descripcion
HAVING (((Sum(BD.Cantidad1))<>0));
Con esto lo que se logra es que no pasen a la consulta aquellos records donde Cantidad1 sea cero.
Yo necesito que pase a la consulta, para que en el reporte se muestre que no hubo nadie en ese horario, pero que en la consulta cuando se calcule la nocturnidad (T2/T1)*100 AS Nocturnidad, en vez de poner Error, no ponga nada y así cuando pase para el reporte aquellos que en turno1 no hubo nadie en la columna %Nocturnidad en vez de poner Error lo deja en blanco.
Vale, entonces tendrás que usar la función condicional SiInm (Iif):
SELECT BD.Descripcion, IIf(Sum([cantidad1])<>0,Sum([cantidad2])/Sum([Cantidad1]),"") AS Expr1
FROM BD
GROUP BY BD.Descripcion;

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas