Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Ayuda con SQL... (https://www.clubdelphi.com/foros/showthread.php?t=51957)

look 05-01-2008 02:23:34

Ayuda con SQL...
 
hola compañeros del foro , tengo el siguiente problema no se si ba aqui ... pero bueno hay me corrigen....:)

tengo la siguiente consulta SQL.
Código SQL [-]

Q_tot_12.SQL.Text:='select sum(subcondesc)as imp12  from fact where esquema=1 ';
Q_tot_12.Active:=true;

Q_tot_15.SQL.Text:='select sum(subcondesc)as imp15  from fact where esquema=3 ';
Q_tot_15.Active:=true;


esto lo hago despues de agregar un articulo en el form de facturacion que estoy haciendo , lo hago con el fin de obtener el total del valor de impuesto al 12 y al 15 el problema es que al agregar un articulo este puede ser al impuesto 12 o al 15 entonces solo se cumple una de las dos condiciones
devolviendome en la que no se cumplio un valor null por lo tanto me genera un error ... la pregunta : es como puedo hacer para que si la SQL devolvio null que el campo que defini como la sumatoria de este , sea 0;
es decir si la SQL que me captura el total imp 12 "select sum(subcondesc)as imp12..." ,.. imp12 sea igual a 0, espero me ayden...

Lepe 05-01-2008 14:09:10

y tu Gestor de Bases de datos es:
- Paradox
- Firebird
- MySql
- SQLServer
- informix
- Oracle
... mejor no sigo, que no sé la respuesta para todos ;).

En principio, busca ayuda por "case when" del lenguaje sql, en la mayoría de sistemas tendrá solución. En caso de Firebird, puedes usar Coalesce(sum(....),0)

Saludos

ContraVeneno 05-01-2008 16:36:47

muchos manejadores tendrían una función similar a la "isnull(campo, 0)" de SQL Server, pero como no dices cuál manejas, pues tendrías que buscar tu mismo...

la otra opción sería utilizar el campo como float (o entero, o moneda, dependiendo del uso que le des), es decir, utilizar:

Código Delphi [-]
with TuDataset do begin
 SQL......
 TuVariable := FieldByName(imp12).AsFloat; //AsInteger, AsCurrency, etc
 ...
end; //with

De esta manera, tu programa se encargará automáticamente de convertir un nulo a cero.


Cosa que no sucede si utilizas:
Código Delphi [-]
with TuDataset do begin
 SQL......
 TuVariable := FieldByName(imp12).Value;
 ...
end; //with

espericueta 16-01-2008 01:01:56

isnull
 
no se que manejador utilices en sql server se puede utilizar esta funcion
isnull

Código SQL [-]
Q_tot_12.SQL.Text:='select isnull(sum(subcondesc),0)as imp12  from fact where esquema=1 ';
Q_tot_12.Active:=true;

Q_tot_15.SQL.Text:='select isnull(sum(subcondesc),0)as imp15  from fact where esquema=3 ';
Q_tot_15.Active:=true;


La franja horaria es GMT +2. Ahora son las 09:27:08.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi