Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Consulta con valor null

597 views
Skip to first unread message

mulbieh

unread,
Nov 28, 2008, 4:29:22 PM11/28/08
to
Buenas noches,

Llevo todo el día intentando solucionar un problemilla que tengo con
una consulta, pero no lo he logrado solventar, así que me he decidido
a utilizar el comodín de este grupo tan fantastico que siempre me ha
ayudado.

Intentaré explicarme: Tengo un campo en la consulta denominado
"Positivo/Negativo" que lo tengo agrupado por el criterio
"Positivo" (es decir, unicamente quiero que me encuentre los
positivos, ya que los negativos y los NS NC no me interesan).

El siguiente campo es el mismo campo,"Positivo/Negativo", pero en este
caso tengo selecionada la opción "cuenta" pq me interesa saber
unicamente el nº de "Positivos" que tengo por semana.

Pues bien, al ejecutar la consulta me he dado cuenta que cuando el
campo no tiene ningún resultado no me muestra nada, y a mi me
interesaria que saliese un 0. (pq, p.ej, no me sale la semana 33, done
tendría que aparecer el campo positivo y al lado un 0)

Leyendo un poco por aquí y por alla, he visto que mencionabaís la
funcion NZ([Positivo/Negativo];0), y la he probado, pero no me ha
servido. Tambien he probado la opción SIInm(Es nulo[Positivo/Negativo];
0;[Positivo/Negativo]), pero tampoco me ha servido.

Total, que no lo consigo. A ver si me podeís echar un lazo para
convertir los valores nulos en 0 , por favor. Muchas gracias! Ah,os
pongo la consulta en SQL por si os sirve de ayuda:

SELECT T_Laborables.año AS Año, Tabla1.[Positivo/Negativo], Count
(Tabla1.[Positivo/Negativo]) AS [CuentaDePositivo/Negativo],
T_Laborables.semana
FROM Tabla1 INNER JOIN T_Laborables ON Tabla1.[Fecha] =
T_Laborables.fecha
GROUP BY T_Laborables.año, Tabla1.[Positivo/Negativo],
T_Laborables.semana
HAVING (((Tabla1.[Positivo/Negativo])="positivo"))
ORDER BY T_Laborables.año DESC;

Chea

unread,
Nov 28, 2008, 5:45:47 PM11/28/08
to
Si se trata de un campo stipo Sí/No, en vez de Cuenta se usa Suma.

Resulta que Verdadero vale -1 y Falso vale 0, de manera que sumando los
verdaderos (-1) tendrás, en negativo, el número de registros que tienen
valor verdadero.


--
Saludos

José Bengoechea Ibaceta [MS-MVP Access]
http://jbengoechea.com/
http://jbchea.net
http://geeks.ms/blogs/access


"mulbieh" <must...@gmail.com> escribió en el mensaje de noticias
news:20617065-9e0a-4fc5...@h20g2000yqn.googlegroups.com...

mulbieh

unread,
Nov 29, 2008, 3:58:14 AM11/29/08
to
Gracias Chea por la pronta respuesta.

El campo "Positivo/Negativo" no tiene formato "Si/No", sino que los
datos se entran en formato texto mediante un desplegable (donde están
las opciones "positivo", "negativo" y "NS NC").

Tal y como lo tengo ahora ( es decir, con la opcion CUENTA) en ppio el
resultado que me salé es el que busco, pero me encuentro que cuando en
una semana no ha habido" positivos", entonces no me muestra esa semana
y a mi me gustaría que saliese 0, en lugar de nulo.

Por ejemplo, y en aras a hacerlo más gráfico, pongo el resultado que
me sale cuando ejecuto la consulta de las primeras 9 semanas:

Año Positivo/Negativo CuentaDepositivo/negativo semana
2007 POSITIVO 13 1
2007 POSITIVO 17 2
2007 POSITIVO 28 3
2007 POSITIVO 33 4
2007 POSITIVO 30 5
2007 POSITIVO 38 6
2007 POSITIVO 38 8
2007 POSITIVO 32 9

Apreciaras que la semana 7 no aparece. Eso es debido a que en esa
semana no hubo "positivos". Pues bien, a mi me gustaría que en lugar
de no aparecer esa semana (tal y como ocurre ahora) apareciese tal y
como sigue a continuación:

2007 POSITIVO 38 6
2007 POSITIVO 0 7
2007 POSITIVO 38 8

¿Es posible conseguirlo?

Muchas gracias

Ju@nK [MVP 2006/8]

unread,
Nov 29, 2008, 6:23:00 AM11/29/08
to
En ese caso en lugar de nulos, tendrás vacios "", de todas formas a ti lo
que te interesa es la cuenta que salga a cero cuando es nula así que prueba
esto:

SELECT T_Laborables.año AS Año, Tabla1.[Positivo/Negativo], nz(Count
(Tabla1.[Positivo/Negativo]),0) AS [CuentaDePositivo/Negativo],


T_Laborables.semana
FROM Tabla1 INNER JOIN T_Laborables ON Tabla1.[Fecha] =
T_Laborables.fecha
GROUP BY T_Laborables.año, Tabla1.[Positivo/Negativo],
T_Laborables.semana
HAVING (((Tabla1.[Positivo/Negativo])="positivo"))
ORDER BY T_Laborables.año DESC;

--
--
**
Salu2/Regards
Ju@nK [MVP Access] 2006/08
[DCE2003 ***] + VSTO [DCE2005 **]
http://juank.mvps.org http://www.juank.es
Correos personales o preguntas particulares en mi grupo
http://groups.google.es/group/juank?hl=es
www.juank.tk
¿Que es un MVP?, entérate en http://mvp.support.microsoft.com
**


"mulbieh" <must...@gmail.com> escribió en el mensaje

news:be0a1835-1c5d-4da3...@k41g2000yqn.googlegroups.com...

mulbieh

unread,
Nov 29, 2008, 6:46:10 AM11/29/08
to
Gracias Ju@nK, pero ya lo había probado, y sigue sin detectarme las
semanas donde no ha habido registros "positivos".

Supongo que debe ser algo mal que he hecho en mi consulta, y
posiblemente no me haya dado cuenta, pero no se me ocurre donde puede
estar el error.

Incluso he probado con la función SiInm, pero tampoco me ha funcionado
o quizas no he sabido definirla correctamente. Si se os ocurre donde
puede estar el error os estaré muy agradecido.

Gracias y saludos

Patxi Sanz

unread,
Nov 29, 2008, 9:54:26 AM11/29/08
to
Prueba a cambiar el tipo de relación entre las 2 tablas.

En vez de usar un INNER JOIN (devolver sólo los registros que tengan datos
en las 2 tablas), puedes usar un LEFT JOIN (devolver todos los registros de
la tabla T_Laborables y sólo los registros de la tabla Tabla1 que estén
relacionados).

--
Un saludo,


Patxi Sanz
patxisanz[ARROBA]yahoo[PUNTO]es
http://es.geocities.com/patxisanz/index.html
Tudela (NA)

mulbieh

unread,
Nov 29, 2008, 11:13:02 AM11/29/08
to
Gracias nuevamente Patxi , pero tampoco.

Lo he probado con LEFT JOIN y con RIGHT JOIN , y los datos siguen
apareciendo igual.Sigo probando cosas, pero de momento nada. Si avanzo
algo ya lo comentaré, pero no consigo localizar el error.

Saludos

julian-Vlc-Sp

unread,
Nov 29, 2008, 2:32:05 PM11/29/08
to
Me ha parecido entender que primero seleccionas los registros que en un campo
tienen el valor positivo

Si estoy en lo cierto con los registros que te quedan puedes agrupar contar
y lo que quieras, pero recuerda que ya NO tienes registros con valores
distintos a positivo.

Una opcion puedes ser:

En tu consulta NO filtres con el valor positivo.

Agrega a la consulta un campo calculado mas menos como sigue:

ParaContar: SiInm(TuCampo = "Positivo";1;0)

Ahora agrupa como necesites y suma este nuevo campo calculado


SALUDOS.
julian-Valencia-España

http://ijulian.iespana.es
http://www.tinyurl.com/julianvalencia

mulbieh

unread,
Nov 29, 2008, 5:41:58 PM11/29/08
to
Creo que he entendido lo que sugieres julian-Vlc-Sp, pero no sé
finalizar el desarrollo que propones. De hecho, lo he probado, y
podriamos decir que funciona, pq me detecta todas las semanas, pero
luego cuando intento agrupar nuevamente por "positivo" (en este caso
representado a traves del valor "1"), entonces desaparecen nuevamente
las semanas donde este valor "1" (o positivo) es nulo. Intento
explicarme mejor. Para ello voy a remontarme al ppio, ya que quizás el
problema reside en que no lo he explicado del todo bien (disculpas)

Tengo un formulario donde, entre los muchos campos que hay, existe
uno denominado "Positivo/Negativo", en el cual aparece un desplegable
en el que puedes seleccionar 3 posibles valores (a saber: "Positivo",
"Negativo", y "NsNc"). Pues bien, mi intención era crear una consulta
donde poder cribar por semana cuantos "Positivos" han entrado durante
un año en concreto.

Para ello había creado la siguiente consulta.

Año Positivo/negativo Positivo/negativo
Semana
Agrupar por Agrupar por Cuenta
Agrupar por
"Positivo"

Si ejecuto esta consulta las semanas donde no han habido "positivos"
no las informa ,es decir, no pone "0", y p.ej, pasa de la semana 6 a
la 8, y la 7 no la informa, y asi tb me sucede con otras semanas.

Pues bien, al ejecutar la consulta que propone julian-Vlc-Sp consigo
que , p.ej, la semana 7 efectiavmente aparezca (con valor "0"), pero
cuando intento agrupar los valores "1" (los equivalentes al
"positivo"), entonces me vuelve a desaparecer las semanas donde no ha
habido positivos. Por eso decía que creo entender tu sugerencia, pero
no se si he entendido muy bien el desarollo de tu idea.

En cualquier caso, muchas gracias nuevamente!


julian-Vlc-Sp

unread,
Nov 29, 2008, 8:26:01 PM11/29/08
to
Supongamos una tabla como sigue:

año semana positivo/negativo
2007 4 positivo
2008 1 positivo
2008 1 negativo
2008 2 positivo
2008 2 positivo
2008 3 negativo
2008 3 ns/nc

Prueba la siguiente consulta:

SELECT Tabla1.año, Tabla1.semana,
Sum(IIf([positivo/negativo]="positivo",1,0)) AS Positivos
FROM Tabla1
GROUP BY Tabla1.año, Tabla1.semana
HAVING (((Tabla1.año)=[indique año]));


SALUDOS.
julian-Valencia-España

http://ijulian.iespana.es
http://www.tinyurl.com/julianvalencia

Ju@nK [MVP 2006/8]

unread,
Nov 30, 2008, 2:34:39 AM11/30/08
to
Vamos a analizar la consulta, mezclandola con la consulta de Julian y la de
Patxi, quitando la condición y modificando otra, prueba esto:

SELECT T_Laborables.año AS Año, Tabla1.[Positivo/Negativo],

sum(iif(Tabla1.[Positivo/Negativo])="Positivo",1,0)) AS
[CuentaDePositivo/Negativo],
T_Laborables.semana
FROM Tabla1 RIGHT JOIN T_Laborables ON nz(Tabla1.[Fecha],T_Laborables.fecha)

=
T_Laborables.fecha
GROUP BY T_Laborables.año, Tabla1.[Positivo/Negativo],
T_Laborables.semana

ORDER BY T_Laborables.año DESC;

--
--
**
Salu2/Regards
Ju@nK [MVP Access] 2006/08
[DCE2003 ***] + VSTO [DCE2005 **]
http://juank.mvps.org http://www.juank.es
Correos personales o preguntas particulares en mi grupo
http://groups.google.es/group/juank?hl=es
www.juank.tk
¿Que es un MVP?, entérate en http://mvp.support.microsoft.com
**
"mulbieh" <must...@gmail.com> escribió en el mensaje

news:da035da9-bb62-4469...@13g2000yql.googlegroups.com...

julian-vlc-sp

unread,
Nov 30, 2008, 5:05:54 AM11/30/08
to
===========================================
¡Importante!: Colabora con el grupo.Contesta a este mensaje
y dinos si te sirvió o no la respuesta dada. Muchas gracias.
===========================================

Solo por curiosidad

¿Y mi propuesta? o ¿Acaso no se ve?


SALUDOS.
Julián-Valencia-España
http://www.tinyurl.com/julianvalencia


"Ju@nK [MVP 2006/8]" <con...@hotmail.com> escribió en el mensaje
news:%23qYXY4r...@TK2MSFTNGP03.phx.gbl...

Ju@nK [MVP 2006/8]

unread,
Nov 30, 2008, 6:13:35 AM11/30/08
to
Está incompleta, mira la pregunta, quiere totales por semana uniendolo a
otra tabla de fechas.

--
--
**
Salu2/Regards
Ju@nK [MVP Access] 2006/08
[DCE2003 ***] + VSTO [DCE2005 **]
http://juank.mvps.org http://www.juank.es
Correos personales o preguntas particulares en mi grupo
http://groups.google.es/group/juank?hl=es
www.juank.tk
¿Que es un MVP?, entérate en http://mvp.support.microsoft.com
**

"julian-vlc-sp" <ijulianE...@iespana.es> escribió en el mensaje
news:Otl%238MtUJ...@TK2MSFTNGP03.phx.gbl...

julian-vlc-sp

unread,
Nov 30, 2008, 7:55:11 AM11/30/08
to
===========================================
¡Importante!: Colabora con el grupo.Contesta a este mensaje
y dinos si te sirvió o no la respuesta dada. Muchas gracias.
===========================================

Vale, mi propuesta muestra cero en aquellas semanas que tienen algo y que no
tiene positivos.

Si desea cero en aquellas semanas que no tienen positivos ni nada que os
haga caso que seguro que lo estáis orientando bien


SALUDOS.
Julián-Valencia-España
http://www.tinyurl.com/julianvalencia


"Ju@nK [MVP 2006/8]" <con...@hotmail.com> escribió en el mensaje

news:evgrtytU...@TK2MSFTNGP05.phx.gbl...

Ju@nK [MVP 2006/8]

unread,
Nov 30, 2008, 9:37:13 AM11/30/08
to
¿Y las semanas que no están en esa tabla y solo están en la otra?

--
--
**
Salu2/Regards
Ju@nK [MVP Access] 2006/08
[DCE2003 ***] + VSTO [DCE2005 **]
http://juank.mvps.org http://www.juank.es
Correos personales o preguntas particulares en mi grupo
http://groups.google.es/group/juank?hl=es
www.juank.tk
¿Que es un MVP?, entérate en http://mvp.support.microsoft.com
**
"julian-vlc-sp" <ijulianE...@iespana.es> escribió en el mensaje

news:e377iruU...@TK2MSFTNGP05.phx.gbl...

julian-vlc-sp

unread,
Nov 30, 2008, 12:22:52 PM11/30/08
to
===========================================
¡Importante!: Colabora con el grupo.Contesta a este mensaje
y dinos si te sirvió o no la respuesta dada. Muchas gracias.
===========================================

Pues eso he querido escribir, que mi propuesta no cuenta esas semanas que no
tienen nada.

Que para mostrar esas que os haga caso a vosotros que lo estaréis orientando
bien


SALUDOS.
Julián-Valencia-España
http://www.tinyurl.com/julianvalencia


"Ju@nK [MVP 2006/8]" <con...@hotmail.com> escribió en el mensaje

news:uffQkkvU...@TK2MSFTNGP02.phx.gbl...

mulbieh

unread,
Dec 1, 2008, 3:22:17 AM12/1/08
to
Disculpad la demora en responder, pero he estado un poco resfriado, y
he tenido que guardar reposo.

Ju@nK: He probado la SQL que me indicastes, pero el access no me
reconoce la parte relativa al RIGHT JOIN, ya que me indica que no
puede representarlo.

Es decir, cuando intento ejecutar la consulta el acces me indica que
no puede representar la formula "Nz(Tabla1.[Fecha
fax],T_Laborables.fecha)=T_Laborables.fecha.

Concretamente, si intento ir a la vista diseño,el mensaje que aparece
es el siguiente: " No se puede representar la expresión de la
combinación Nz(Tabla1.[Fecha fax],T_Laborables.fecha)
=T_Laborables.fecha en la Vista diseño".

Por el contrario, si intento ejecutar directamente la consulta desde
la SQL, entonces el acces se me queda bloqueado.

Estoy intentando cambiar los parametros de la relación en aras a ver
si asi desatasco el tema (es decir, en lugar de vincular ambas tablas
a través de la fecha, intentar hacerlo, p.ej, a traves del campo año),
pero no sé si conseguiré solventarlo.

Ju@nK [MVP 2006/8]

unread,
Dec 1, 2008, 5:44:07 PM12/1/08
to
Copia y pega un par de registros completos de cada tabla (que no valgan)
para que te haga unas pruebas con la consulta, ej:

TuTabla Empresa Dpto Telf1 Telf2 Telf3
Empresa1 Ventas 931111111 932222222

Empresa1 Compras 933333333


Empresa2 Dpto1 911111111 912222222 913333333


--
--
**
Salu2/Regards
Ju@nK [MVP Access] 2006/08
[DCE2003 ***] + VSTO [DCE2005 **]
http://juank.mvps.org http://www.juank.es
Correos personales o preguntas particulares en mi grupo
http://groups.google.es/group/juank?hl=es
www.juank.tk
¿Que es un MVP?, entérate en http://mvp.support.microsoft.com
**
"mulbieh" <must...@gmail.com> escribió en el mensaje

news:d73253a1-0d3d-4d3a...@k36g2000yqe.googlegroups.com...

mulbieh

unread,
Dec 2, 2008, 12:25:17 PM12/2/08
to
Bueno, creo que lo he conseguido...más ó menos...es una solución al
estilo Pepe Gotera y Otilio, pero bueno, creo que me podré apañar.

Basicamente lo que he hecho es sumar el total de expdtes recibidos por
semana, y luego restar todos lo que no son "positivos" (es decir, los
"negativos" y los "NS NC", ya que de estos siempre hay y nunca puede
existir un 0). El resultante son precisamente los "positivos" por
semana que yo buscaba, de manera que aquellas semanas que no hubo
positivos me aparece 0 ( o,en ocasiones el resultado es menos X, pero
en estos casos lo que he hecho es aplicar un Siinm < 0 y ya está).

En cualquier caso, no me quería despedir sin agradeceros toda la ayuda
y apoyo que me habeís dado todos. Muchas muchas gracias!! .Como
siempre, solo puedo decir que sois un grupo fantastico con el que que
siempre se aprende algo. Eso seguro

Saludos

Ju@nK [MVP 2006/8]

unread,
Dec 3, 2008, 4:31:34 AM12/3/08
to
:-)

--
--
**
Salu2/Regards
Ju@nK [MVP Access] 2006/08
[DCE2003 ***] + VSTO [DCE2005 **]
http://juank.mvps.org http://www.juank.es
Correos personales o preguntas particulares en mi grupo
http://groups.google.es/group/juank?hl=es
www.juank.tk
¿Que es un MVP?, entérate en http://mvp.support.microsoft.com
**
"mulbieh" <must...@gmail.com> escribió en el mensaje

news:e8b08711-2e66-4fea...@r40g2000yqj.googlegroups.com...

0 new messages