FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
NullAsZero en Delphi ?
Alguien seria tan amable de decirme si existe en Delphi alguna variable de entorno que funcione igual a la del Paradox NullAsZero ?
Sobre todo para SQL en Delphi, donde los NULL a veces son un problema, al hacer operaciones aritmeticas "horizontales" ( en el mismo registro ). Por ejemplo:
asumiendo que Col1 y Col2 son columnas de tipo numerico, y un registro contiene un NULL en cualquiera de esas dos columnas, la Suma seria NULL para ese registro ( horizontalmente hablando ). Se trata de que alguna variable de entorno permita interpretar a los NULL como ceros, a opcion del programador. Muchas gracias, Saludos a todos !!!! |
#2
|
||||
|
||||
Buenos dias.
Lo que pides es una función SQL, no de Delphi. Si usas FireBird 1.5 o superior lo puedes hacer con la instruccion COALESCE Ejp: si uno de ellos (col1 o col2) es null, el resultado será CERO. Si cualquiera de ellos es NULL, se sumará CERO
__________________
Progress Openedge https://abevoelker.com/progress_open...dered_harmful/ Delphi forever... Última edición por defcon1_es fecha: 24-05-2007 a las 12:53:07. |
#3
|
|||
|
|||
Gracias por la informacion
Muchas gracias, Defcon1_es !
Estoy trabajando con el SQL que viene con Delphi ( version 5 ), usando tablas tipo Paradox / BDE. ( Entiendo le llaman Local SQL al ). Sio alguien sabe de alguna forma de lograr interpretar los NULL como ceros, le ruego me enseñe como poder hacerlo. Muchas gracias !!! Saludos !!! |
#4
|
||||
|
||||
Pues el SQL local me parece que no cuenta con Coalesce o equivalente. Si ha de hacerse con SQL podrías intentar algo como
aunque lo veo bastante chapucero. Podrías intentarlo del lado del cliente agregando un campo calculado al Table que uses, por ejemplo:
// Saludos |
#5
|
|||
|
|||
Gracias !!
"Al Leon se le reconoce por las garras !"
Es increible !!!! Roman siempre encuentra una solucion ingeniosa y elegante !!!! Con mucho respeto lo llamare G.M.Roman de ahora en adelante. ( G.M. --> Grand Master ). Si usted estuviese en Borland, estoy seguro que Delphi seria mucho mejor, y definitivamente mejor documentado !!! Mi admiracion y gran respeto para usted, por su inteligencia, conocimiento, facilidad de expresion y tanta paciencia !!! Le deseo siempre lo mejor !!! |
#6
|
||||
|
||||
La consulta anterior- como dije -es bastante chapucera. Aquí te pongo otra, igual de chapucera pero quizá más eficiente y manejable:
suponiendo aquí, que a y b son de tipo NUMERIC. El CAST interno,
fuerza el valor NULL a ser una cadena, de manera que el CAST exterior ya lo convierte a 0. Si el valor no es NULL, el doble CAST simplemente convierte a cadena y de vuelta a número sin alterar nada. De esta manera nos evitamos los UNION y nos permite agregar más columnas a la suma. Con el método del UNION, por cada columna extra, se requeriría agregar otro tanto de consultas, es decir, con n columnas se tendrían que usar 2^n consultas en la unión. Por otra parte, yo prefiero que sigas llamándome roman, que ése es mi nombre. Lo demás, si bien agradezco el halago, sólo son palabras. Aquí somos todos iguales. // Saludos |
#7
|
|||
|
|||
Muy bonita solucion !!
Roman, muy bonita solucion !!!.
Con esto queda mas que resuelto el problema ! Otra vez le agradezco !!! Saludos y les deseo lo mejor ! PD: Tengo otra pregunta acerca de SQL, pero mejor la pongo en otro hilo, porque no tiene nada que ver con esto. |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Consulta Delphi 6, Delphi 2005 y Delphi 2006 | Leviatan | Varios | 6 | 18-08-2007 16:02:08 |
|