Access - Consulta access con suma no devuelve valor cero

   
Vista:

Consulta access con suma no devuelve valor cero

Publicado por David davidiron5@hotmail.com (7 intervenciones) el 12/08/2015 15:40:25
Buenas a todos,

Es mi primer comentario en este foro.

Estoy realizando una base de datos en donde he realizado una consulta que me suma el valor de todos los presupuestos no aceptados que hemos realizado para determinada empresa. Adjunto imagen de la consulta (1-Consulta.jpg). El filtro de la "empresa", como se aprecia en la imagen proviene de un formulario.

La consulta funciona si selecciono una empresa que tiene presupuestos no aceptados ya que me devuelve la suma (imagen 2-Con valor.jpg); el problema reside en que si selecciono una empresa que no tenga presupuestos no aceptados no me devuelve ningún valor y yo quisiera que me devolviera cero. (imagen 3-Sin valor.jpg).

He probado con la expresión Nz, pero no funciona.

A ver si alguien me puede echar un cable por que llevo más de 10 horas realizando varias pruebas y no encuentro solución alguna.

Muchas 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

Consulta access con suma no devuelve valor cero

Publicado por Enrique Heliodoro (1663 intervenciones) el 12/08/2015 15:59:02
No se aprecia en que punto se ha intentado aplicar la función NZ

Si solo es a efectos informativos, los campos de los formularios admiten 'estética', normalmente cuatro posibilidades:
.- Valores positivos
.- Valores negativos
.- Valor cero
.- Valor NULL

En base a ello y en la propiedad 'formato':
#,00[Negro];- #,00[Rojo];" es cero"[Azul];"no hay datos"[Verde]

O asi, (mas clásicos):
#,00;- #,00[Rojo];" es cero";"no hay datos"

#,00;- #,00[Rojo];"0,00";"0,00"

Ojo a la configuración regional, en el ejemplo esta la española (la coma separador decimal, el punto y coma el separador de listas).
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

Consulta access con suma no devuelve valor cero

Publicado por DAVID BADIA davidiron5@hotmail.com (7 intervenciones) el 12/08/2015 16:25:00
Hola Enrique,

Gracias por responder,

Te comento algún detalle:

-La expresión nz la he usado tanto en esta misma consulta para generar un campo nuevo que me devuelva el valor cero si la suma es nula, y yambién la he usado en otra consulta dependiente de esta con el mismo objetivo, crear un campo nuevo que me devuelva cero si la suma es nula, pero nada de nada.

-Lo que me comentas de los formularios no me sirve, ya que yo lo que quiero es que al ejecutar la consulta me lanze la suma de pressupuestos sin que tenga que intervenir ningún formulario.

Si te interesa te puedo manda la base de datos que estoy haciendo.
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

Consulta access con suma no devuelve valor cero

Publicado por Enrique Heliodoro (1663 intervenciones) el 12/08/2015 18:38:48
Un valor NULL puede provenir de al menos dos posibilidades:

Una (la mas clásica) es que el objeto exista como tal, pero no se le hubiera iniciado (lo mas clásico acostumbra a ser una tabla en la que por defecto ni se le asigna valor a un campo ni el campo esta configurado como requerido), su 'valor real' noes NULL, sino Empty (sin inicializar)

La otra mas conocida es que se intente tomar el valor de un objeto que NO existe, uno de los mas clásicos es intentar sumar datos que no existen (clásico: un campo en el pie del formulario sumando o reflejando un dato de un formulario en el que no existen registros, si no existen registros, no existe el objeto al que se hace la referencia).

Para solucionar el primero de los expuestos se aplica la función NZ, la cual en si misma es un simulacro de un IIF, si existe: el valor, si no existe: el dato alternativo)

Para el segundo no es valida la función NZ, porque no se puede evaluar lo inexistente, asi que se acostumbra a validar con una función y proponer la alternativa con un IIF

Si se evalua en general (para mi la ultima opción): IF IsError([lo que se quiera evaluar]) ==> devuelve un True, False
Si se espera un valor (por ejemplo numérico) : IF IsNumeric([lo que se quiera evaluar]) ... igualmente devuelve un verdadero/falso.

Tenemos (en base a lo anterior) lo suficiente para aplicar la función IIF:
IIF(IsNumeric([????]), [????], 0)

En definitiva, si en el objeto ??? hay un valor numérico: su valor, si el objeto no existe (o no tiene un valor numérico) el cero (o alternativa que se indique).
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

Consulta access con suma no devuelve valor cero

Publicado por David (7 intervenciones) el 12/08/2015 20:44:09
Hola de nuevo Enrique,

Resulta que la función que me has pasado también la habia usado. Es la misma que "silnm" ya que cuando coloco la función "IIF" automaticamente me lo transforma a "Silnm".

Te envio adjuto, mi base de datos reducida a dicha cuestión, para ver si sabes como solucionarlo. Te explico:

Si abres el formulario y en la casilla "Nombre empresa" seleccionas la empresa "AA" y ejecutas la consulta, sale que dicha empresa tiene un valor de 2.500 euros, en cambio si seleccionas la empresa "BB" y ejecutas, no sale nada y aqui me gustaría que saliera 0.

Lo que hace dicha consulta es filtrar el valor de los pressupuestos de dicha empresa que no han sido aceptados. La empresa "AA" tiene presupuestos aceptados y no aceptados, pero la empresa "BB" todos los presupuestos son aceptados y por eso tendría que salir 0 euros.

Si me pudieras echas un cable estaría muy agradecido.
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

Consulta access con suma no devuelve valor cero

Publicado por Enrique Heliodoro (1663 intervenciones) el 12/08/2015 23:49:35
No le veo mucho sentido a generar una consulta de agrupación para obtener un único dato, además la presentación en modo hoja de datos no permite mucha estética.

Lo normal seria utilizar una función de dominio (DSUM) que convenientemente filtrada devuelva ese mismo dato y permite su presentación directa en un cuadro de texto.

En lugar de la función IIF (que asumo se aplica para la suma en conjunto de todas las empresas) he utilizado la técnica de añadir asteriscos para englobar al conjunto

Para lograr 'el cero' en este punto si se puede aplicar NZ (hay un 'algo' sobre el que aplicarlo el NULL que devuelve la función de dominio)

He duplicado el resultado para poder 'apreciar' lo del formato y añadido una empresa con un presupuesto negativo (solo a efectos de demostración)

También he automatizado la carga de datos del combo para evitar los valores fijos.

Los cálculos se actualizan de forma automática (por ello aparece un calculo global al abrir el formulario)

Espero que te sea de utilidad
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

Consulta access con suma no devuelve valor cero

Publicado por David (7 intervenciones) el 13/08/2015 11:38:09
Hola de nuevo Enrique:

La solución que me has aportado no es precisamente idónea para lo que yo estoy buscando. Quizás te tendría que haber explicado con todo detalle de porque quiero que me aparezca el cero en la consulta.

Lo que yo quiero hacer es un informe con un gráfico que esté vinculado a una determinada consulta (según mis conocimientos un informe solamente puede estar vinculado a una tabla o una consulta y no a un formulario, con lo que tu opción no me sirve aunque aparezca el cero).

Te vuelvo a enviar la base de datos con todas las consultas al respecto.

En la base de datos original tengo 4 consultas:

A-Me calcula la suma de presupuestos totales (aceptados y no aceptados y el conteo de presupuestos (pudiéndose filtrar a través de un formulario por empresa y fecha)

B-Me calcula la suma de presupuestos no aceptados y el conteo de dichos presupuestos (pudiéndose filtrar a través de un formulario por empresa y fecha)

C-Me calcula la suma de presupuestos aceptados y el conteo de dichos presupuestos (pudiéndose filtrar a través de un formulario por empresa y fecha)

D-Consulta en dónde agrupo los datos anteriores y en dónde aplico campos calculados para sacar por ejemplo el porcentaje de presupuestos aceptados en el 2014 o el porcentaje del valor de los presupuestos no aceptados en el 2013 por determinada empresa.

PD: en el archivo adjunto he omitido el filtrado por fechas.

Con los datos de la consulta D, quiero generar un informe al cual le aplico un gráfico (por ejemplo circular 3d) para apreciar el porcentaje de presupuestos aceptados y no aceptados.

Fíjate en la consulta "D-CONSULTA_FINAL_GRAFICO", allí estan todos los datos recopilados junto con los campos calculados de porcentaje. Estos campos calculados de porcentaje son los que quiero usar para generar el gráfico en el informe.

Y como te he comentado el problema creo que sigue igual, si una empresa tiene todos los presupuestos aceptados, cuando genero la consulta de presupuestos no aceptados no sale nada y no se calcula ningún dato.

El funcionamiento es como el anterior, abrir el formulario y seleccionar la empresa por la que filtrar o ninguna empresa.
3 tipos de resultado:

1-FILTRADO POR NINGUNA EMPRESA: El resultado es correcto. Te devuelve todos los valores y los campos calculados del porcentaje.

2-FILTRADO POR EMPRESA "AA": El resultado es correcto. Te devuelve todos los valores y los campos calculados del porcentaje, ya que dicha empresa tiene tanto presupuestos aceptados como no aceptados.

3-FILTRADO POR EMPRESA "BB": El resultado NO es correcto. No devuelve ningún valor ya que esta empresa no tiene presupuestos no aceptados. Si desglosamos las consulta, la consulta "A" nos da valor correcto ya que nos calcula el valor global de todos los presupuestos (aceptados y no aceptados), la consulta "B" es en donde esta el error ya que esta empresa no tiene ningún presupuesto no aceptado, los dos presupuestos que tiene esta empresa están aceptados y aparecen en la consulta "C".

Espero que me hayas podido entender. Creo que la solución más factible es que en las consultas que no aparezca ningún valor apareciera el cero, pero he intentado de todo y no hay manera. he visto en algún foro donde más de uno realiza la misma pregunta pero no he sabido encontrar solución.

Las soluciones aportadas en los foros es unas la funcón "NZ" o "Silnm", pero el resultado sigue sin resolverse.

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

Consulta access con suma no devuelve valor cero

Publicado por Enrique Heliodoro (1663 intervenciones) el 13/08/2015 17:46:48
Ojeare la base, lo de parcializar la información para que los arboles no dejen ver el bosque es (al menos para mi) el peor método utilizable al solicitar ayuda.

Si ojeas con un mínimo de atención el cuarto mensaje del hilo, apreciaras que hay un método (posiblemente te ha pasado desapercibido) que devuelve un cero (o lo que se le indique) cuando el objeto no existe (y por ello no es aplicable la función NZ).
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

Consulta access con suma no devuelve valor cero

Publicado por David (7 intervenciones) el 14/08/2015 13:34:56
Muy buenas Enrique,

Que no te sepa mal el que haya parcializado la información; simplemente lo hice para no cargar de mucha información en el primer comentario en el foro.

I si que le estuve echando un vistazo a la solución que me aportaste. He podido adaptar tu solución a lo que yo quería. He podido realizar una consulta a partir de la información sacada del formulario, cosa que a día de hoy no lo sabia, pensaba que la información de una consulta solamente se podía sacar de una tabla o otra consulta.

Te reenvío la base de datos para que veas la solución que he dado, a ver que te parece. Ahora estoy por empezar con el gráfico.

Solamente te quiero pedir una ayudita que creo que para ti será muy fácil; yo lo he intentado pero es que son conocimientos de access que yo no tengo.

Si te fijas en el formulario, los datos se pueden filtrar por el nombre de la empresa (gracias a la expresión que tú me colocaste). A mi me gustaría que también se pudieran filtrar por la fecha, es decir, quisiera sacar los datos de determinada empresa entre 2 fechas, por ejemplo desde el 01/01/2014 hasta el 31/12/2014. He puesto las dos casillas de las fechas, pero no logro sacar dicha expresión.

Muchas gracias por todo Enrique!!!!!
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