Valores nulos en Select

86 views
Skip to first unread message

Angel Dario Rodriguez

unread,
Jul 10, 2013, 1:50:04 PM7/10/13
to publice...@googlegroups.com
Buenas amigos.
Confronto el siguiente problema en VFP9, ejecuto este select

SELECT i.articulo, i.descripcio, i.referencia, i.ref_corta, i.medida, i.precio_min, i.precio_act, i.precio_usa, i.precio_eur, i.exist_Act, ;
                                 (SELECT SUM(f2.cantidad)  FROM cgccfac2 f2  WHERE f2.articulo = i.articulo) as venta1,;
                                 (SELECT SUM(dv4.cantidad) FROM cgccfac4 dv4 WHERE dv4.articulo = i.articulo) as dev_ven1,;
                                 (SELECT SUM(e2.cantidad)  FROM cginent2 e2  WHERE e2.articulo = i.articulo) as entrada1,;
                                 (SELECT SUM(dc2.cantidad) FROM cgindvc2 dc2 WHERE dc2.articulo = i.articulo) as devol_com1,;
                                 (SELECT SUM(a2.cantidad)  FROM cginaju2 a2  WHERE a2.articulo = i.articulo) as ajuste1,;
                                 (SELECT SUM(d2.cantidad - d2.cant_fact)  FROM cgindes2 d2  WHERE d2.articulo = i.articulo) as despacho1;
  FROM CGINVENT i ;
  ORDER BY descripcio;
  INTO TABLE PRUEBA
 
el problema esta en que en los casos en que el articulo no tiene registro en una tabla, el valor que retorna es nulo y quiero que para esos casos sea cero.

Tiene alguien alguna suegerencia ?

Gracias anticipadas Angel Dario Rodriguez.

Claudio Luna

unread,
Jul 10, 2013, 1:54:59 PM7/10/13
to Comunidad de Visual Foxpro en Español
Angel,
Podes hacer por ejemplo: sum(iif(!isnull(cantidad),cantidad,0)
Saludos
Claudio


2013/7/10 Angel Dario Rodriguez <angel....@gmail.com>



--
Claudio Luna
Monttevideo - Uruguay
SKYPE: clunamarin
Cel. 099 194 770

Antonio.xt

unread,
Jul 10, 2013, 1:59:09 PM7/10/13
to publice...@googlegroups.com

Para eso esta la funcion NVL(), que te regresa un valor en caso de que el valor dado sea nulo

Ejemplo: NVL(cantidad, 0)
Si cantidad es NULO te regresa un 0.

Esto es lo mismo que: IIF(ISNULL(cantidad), 0, cantidad)

Angel Dario Rodriguez

unread,
Jul 10, 2013, 2:01:36 PM7/10/13
to publice...@googlegroups.com
Gracias Claudio por tu atencion.

No me funciono.

Recordemos que en las tablas el campo CANTIDAD nunca tiene valores nulos, el nulo ocurre cuando el codigo de ese articulo no existe dentro de la tabla y como el quiero no sabe que hacer, responde con un valor nulo.


2013/7/10 Claudio Luna <thom...@gmail.com>

Angel Dario Rodriguez

unread,
Jul 10, 2013, 2:11:06 PM7/10/13
to publice...@googlegroups.com
Gracias Antonio por te amabilidad.

Tampoco resulto. El asunto es poder indicar en el query que en caso de no encontrar registros me devuelva cero.

Víctor Hugo Espínola Domínguez

unread,
Jul 10, 2013, 2:39:51 PM7/10/13
to publicesvfoxpro
Hola Angel Darío

> (SELECT SUM(f2.cantidad)  FROM cgccfac2 f2  WHERE f2.articulo = i.articulo) as venta1,;

 (SELECT NVL( SUM(f2.cantidad), 0 )  FROM cgccfac2 f2  WHERE f2.articulo = i.articulo) as venta1,;

Saludos,
Víctor.



2013/7/10 Angel Dario Rodriguez <angel....@gmail.com>
Buenas amigos.

Antonio.xt

unread,
Jul 10, 2013, 2:40:40 PM7/10/13
to publice...@googlegroups.com

Ah ok, ya vi el problema, es que no es un valor nulo en el campo cantidad, sino en el resultado de la subconsulta, entonces intenta lo siguiente:

SELECT i.articulo, i.descripcio, i.referencia, i.ref_corta, i.medida, i.precio_min, i.precio_act, i.precio_usa, i.precio_eur, i.exist_Act, ;
    NVL((SELECT SUM(f2.cantidad)  FROM cgccfac2 f2  WHERE f2.articulo = i.articulo),0) as venta1,;
    etc...

Luis Maria Guayan

unread,
Jul 10, 2013, 2:40:57 PM7/10/13
to publice...@googlegroups.com
Mira la ayuda de la funcion NVL()
--
Luis Maria Guayan
Tucuman, Argentia
--
Enviado desde un dispositivo movil

Angel Dario Rodriguez

unread,
Jul 10, 2013, 4:06:47 PM7/10/13
to publice...@googlegroups.com
Mis amigos gracias a todos, la forma que el Maestro Victor me indico funciono perfectamente. Muy agradecido a todos por su gentileza.

Una pregunta mas.

Ha trabajado alguno de ustedes en VFP9 con impresoras fiscales STAR TSP650, en VB6 funciona bien con la vmaxfpi.dll, pero en fox se me hace imposible. Les anexo la dll y el program en VB6, por si alguien me puede dar una ayudita.


2013/7/10 Luis Maria Guayan <luism...@gmail.com>
VmaxTestVb6.txt
vmaxfpi.dll
VmaxTestVb6.frm
VmaxTestVb6.frx

Víctor Hugo Espínola Domínguez

unread,
Jul 10, 2013, 4:14:15 PM7/10/13
to publicesvfoxpro
Hola Angel Darío

La segunda forma sugerida por Antonio también funciona.

Saludos,
Víctor.

Angel Dario Rodriguez

unread,
Jul 10, 2013, 5:01:36 PM7/10/13
to publice...@googlegroups.com
Gracias Victo, la probare tambien.


2013/7/10 Víctor Hugo Espínola Domínguez <vich...@gmail.com>
Reply all
Reply to author
Forward
0 new messages