PROBLEMA CON DATOS NULOS.

397 views
Skip to first unread message

Roberto Matarrita

unread,
May 20, 2014, 1:06:33 AM5/20/14
to publicesvfoxpro
Estoy realizando un sum(consumos) con su debido select, el cual guardo en cursores, son tres select individuales.

Tengo el siguiente problema.

Cuando genero el reporte desde el fox no tengo problema. De los tres select el ultimo da cero y a la ves me muestra la sumatoria de los tres select.

El problema que tengo es cuando copilo el programa y proceso el ejecutable.
Al realizer el tercer select que es cero, me lo muestra como nulo y en la sumatoria final me esta mostrando nulo y no el resultado que si muestra en el programa que se corre desde el fox.

Como puedo solventar este problema, que en el ejecutable realmente me muestre el cero y no un null.

Gracias.

Roberto
Costa Rica.

Carlos Miguel FARIAS

unread,
May 20, 2014, 7:38:54 AM5/20/14
to Grupo Fox
Tu explicación no me da idea acerca de la codificación que usas, y por lo tanto, muy difícil poder guiarte
En general...
Un sum(), puede dar cero por dos razones:
a) la suma algebraica de los números de las filas seleccionadas da cero.
b) Las condiciones de selección de registros son lo suficientemente estrictas como para no seleccionar ninguna fila

Puedes usar la variable pública del sistema _TALLY, luego de cada SELECT para saber si selecciono algo o no.
Saludos: Miguel, La Pampa (RA)

Luis Maria Guayan

unread,
May 20, 2014, 8:41:29 AM5/20/14
to publice...@googlegroups.com
Primero te aconsejo que leas este artículo que te aclarara el panorama sobre los valores NULL

:: ¿Que es un valor NULL entre amigos? ::
http://www.portalfox.com/index.php?name=Sections&req=viewarticle&artid=146

Luis María Guayán
Tucumán, Argentina
_________________________
http://www.PortalFox.com
Nada corre como un zorro
_________________________

MALKASOFT ADPI: http://www.developervfp.blogspot.com/

unread,
May 20, 2014, 11:25:02 AM5/20/14
to publice...@googlegroups.com
Hola estas trabajando con DBF o algún motor de base de datos, si estas trabajando con algún motor de base de datos lo que tienes que hacer es lo siguiente
Para Mysql
Select sum(COALESCE(CampoNumerio,0)) From tutala

SQL Server
Select sum(isnull(CampoNumerio,0)) From tutabla

cada uno de los comandos verifica si uno de los campos tiene como valor null si cumple con la condicion lo transforma en 0

DBF
Select iif(isnull(CampoNumerio),0,CampoNumerio) from TuTabla


Saludos; 


Ing. Russvell Jesus Soto Gamarra 
Framework Multi-conexion v6.0 trabaja cualquier base de datos
(SQLServer, MySQL, Firebird, MariaDB, PostgreSQL, Oracle y etc.) 

mpulla

unread,
May 20, 2014, 2:23:28 PM5/20/14
to publice...@googlegroups.com
Hola Russvell.

Sum pasa por alto los valores null, un Select sum(camponumerica) from mitabla sería suficiente

Roberto dejanos ver el código...

Saludos.
Mauricio

MALKASOFT ADPI: http://www.developervfp.blogspot.com/

unread,
May 20, 2014, 2:57:13 PM5/20/14
to publice...@googlegroups.com
Hola no es así como puede sumar un dato null con un campo numérico, yo tengo comprobado que no es asi si tiene en una columna un registor tipo de dato null el resultado sera null si quieres puedes probar con Excel, por eso es que le esta saliendo null cuando hace la suma.   

Luis Maria Guayan

unread,
May 20, 2014, 4:35:50 PM5/20/14
to publice...@googlegroups.com
Para aclarar un poco el tema:

Las operaciones aritméticas con un valor NULL retornan NULL (Ej: 123 + null ; null * 10)

Y muchos comandos y funciones de VFP y SQL-SELECT permiten y pasan por alto los valores Null como AVG(), CALCULATE, SUM(), etc.

Vuelvo a aconsejar la lectura de este artículo de Janis Booth



Luis María Guayán
Tucumán, Argentina
_________________________
http://www.PortalFox.com
Nada corre como un zorro
_________________________

Carlos Ayala

unread,
May 20, 2014, 5:23:07 PM5/20/14
to publice...@googlegroups.com
Usa la función NVL esta funcion reemplaza los valores nulos por el valor que le pongas para tu caso deberías ponerle CERO para q no se afecte tu resultado final

mpulla

unread,
May 20, 2014, 11:42:52 PM5/20/14
to publice...@googlegroups.com
Hola Russvell.

Como dice el profe las funciones de agragado pasan por alto los valores null.

te copio un pedaso de la ayuda de sql server 2012

Funciones de agregado (Transact-SQL) SQL Server

Las funciones de agregado realizan un cálculo sobre un conjunto de valores y devuelven un solo valor.
Si exceptuamos la función COUNT, todas las funciones de agregado ignoran los valores NULL.
Las funciones de agregado se suelen utilizar con la cláusula GROUP BY de la instrucción SELECT.

Mira el ejemplo

Saludos.
Mauricio
Reply all
Reply to author
Forward
0 new messages