Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Consulta en Cero si no se encuentra datos (https://www.clubdelphi.com/foros/showthread.php?t=62201)

ingabraham 10-12-2008 16:50:17

Consulta en Cero si no se encuentra datos
 
Hola.
DELPHI E INTERBASE 6.0
Realizo mi consulta y la muestro en un dbgrid
Código SQL [-]
select cedula,valor from nomina where concepto='hora extra' and cedula='782538';
ok
Yo quiero lo siguiente que si no encuentra el valor de la hora extra me muestre un cero.

alguna idea de como hacerlo, por q me deja la casilla en blanco.
gracias

Neftali [Germán.Estévez] 10-12-2008 16:58:26

¿Qué base de datos estás utilizando?
Se puede usar la clausula IF en la SQL, pero varía segun el SGBD.

ingabraham 10-12-2008 17:06:39

Cita:

Empezado por Neftali (Mensaje 330320)
¿Qué base de datos estás utilizando?
Se puede usar la clausula IF en la SQL, pero varía segun el SGBD.

Nada no se puede utilizo interbase 6.0

ContraVeneno 10-12-2008 17:09:26

Podrías utilizar los métodos "isEmpty" o "isNull" de tu dataset...

ingabraham 10-12-2008 17:39:25

Cita:

Empezado por ContraVeneno (Mensaje 330326)
Podrías utilizar los métodos "isEmpty" o "isNull" de tu dataset...

Disculpa pero no puedo por que muestro los datos de todos mis empleados en el dbgrid no de uno solo
ej:
ced valor
xxx xxx
yyy yyy
zzz zzz

egostar 10-12-2008 17:49:10

Cita:

Empezado por ingabraham (Mensaje 330335)
Disculpa pero no puedo por que muestro los datos de todos mis empleados en el dbgrid no de uno solo
ej:
ced valor
xxx xxx
yyy yyy
zzz zzz

Hola

Tal vez puedes utilizar la funcion COALESCE

Salud OS

ingabraham 10-12-2008 18:08:40

Cita:

Empezado por egostar (Mensaje 330338)
Hola

Tal vez puedes utilizar la funcion COALESCE

Salud OS


Function unknow

no me reconoce la funcion en interbase 6.0

egostar 10-12-2008 18:15:14

Cita:

Empezado por ingabraham (Mensaje 330341)
Function unknow

no me reconoce la funcion en interbase 6.0

Parece ser que esa función está disponible a partir de Interbase 7.0 :rolleyes:

Salud OS

Caro 10-12-2008 18:33:07

Cita:

Empezado por ingabraham (Mensaje 330341)
Function unknow

no me reconoce la funcion en interbase 6.0

Entonces tendras que usar el evento OnGetText de tu campo Valor.

Código Delphi [-]
procedure TForm1.Query1ValorGetText(Sender: TField; var Text: String;
  DisplayText: Boolean);
begin
  if Sender.AsString = '' then
   Text := '0'
  else
   Text := Sender.AsString;
end;

Saluditos

ingabraham 10-12-2008 20:43:56

Cita:

Empezado por Caro (Mensaje 330345)
Entonces tendras que usar el evento OnGetText de tu campo Valor.


Código Delphi [-]
procedure TForm1.Query1ValorGetText(Sender: TField; var Text: String;
DisplayText: Boolean);
begin
if Sender.AsString = '' then
Text := '0'
else
Text := Sender.AsString;
end;





Saluditos

Disculpa pero no utilizo dataset y mis (dbgrid-datasourse-querys) los utilizo para realizar varias consultas independientes.
gracias por la ayuda pero no podria utilizar ese codigo.

pcicom 11-12-2008 16:50:45

Código SQL [-]

SELECT '782538' AS cedula,(case WHEN valor<>NULL THEN valor ELSE 0 END)  AS valorSinNulo FROM nomina where concepto='hora extra' and cedula='782538';

Lo que tendrias que hacer es crear el comando SQL segun los campos que necesites..

Código Delphi [-]

cCedula := '782538';
cConcepto := 'hora extra';

cSql := 'SELECT' + QuotedStr(cCedula) + ' as cedula, (case WHEN valor<>NULL THEN valor ELSE 0 END)  AS valorSinNulo FROM nomina where concepto=' + QuotedStr(cConcepto)+' and cedula='+QuotedStr(cCedula);

qry.clear;
qry.add(cSql);
qry.open;

ingabraham 05-01-2009 19:11:18

case no lo reconoce interbase
 
discupla pero el case no es aceptado en interbase

xander 06-01-2009 18:58:17

lo unico que podrias hacer en IB6 sería una UDF que te devolviera el valor que necesitas dada la condición... es decir implementar una funcion similar al IIF via una UDF... revisa en google debe haber alguna implementación por ahí ya hecha por algún ruso sin novia.

Saludos

Kipow 06-01-2009 19:04:29

proba con

Código SQL [-]
select cedula,ABS(valor) 
from nomina 
where concepto='hora extra' and cedula='782538';

asi lo hacia yo hasta que migre a firebird 2.1 y me entere de la funcion COALESCE.

Saludos.

Delphius 06-01-2009 19:55:16

Off-topic
 
Cita:

Empezado por xander (Mensaje 333530)
revisa en google debe haber alguna implementación por ahí ya hecha por algún ruso sin novia.

Saludos

Disculpame xander, pero no sabía que los informáticos rusos no tenían novia. Suena un tanto despectiva tu frase.

Te felicito a ti por tener alguien a tu lado.

Cita:

Empezado por Kipow (Mensaje 333532)
proba con

Código SQL [-]select cedula,ABS(valor) from nomina where concepto='hora extra' and cedula='782538';


asi lo hacia yo hasta que migre a firebird 2.1 y me entere de la funcion COALESCE.

Saludos.

Nomás aclaro que COALESCE existe desde Firebird 1.5;)

Saludos,


La franja horaria es GMT +2. Ahora son las 16:18:35.

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