Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Como sustituir un valor durante una consulta para mostrarlo en un dbgrid (https://www.clubdelphi.com/foros/showthread.php?t=39250)

chetos7 15-01-2007 02:10:22

Como sustituir un valor durante una consulta para mostrarlo en un dbgrid
 
Hola, yo otra vez, es que tengo otra duda. Tengo una tabla de libros donde sus campos son IdLibro, Titulo, Autor...StatusL, donde el status es 0 para disponible y 1 para prestado. Aqui esta el asunto, quiero que mi consulta la muestre en un dbgrid, lo cual ya hace, pero pues en status me pone un 0 o 1, lo cual esta bien, ya que pido que me ponga el valor, pero quiero que me muestre en el dbgrid "Disponible" cuando su status sea 0 y "Prestado" cuando su status sea 1,. en lugar de 0 y 1, pero nada mas para mostrar, sin que el valor en la tabla se altere.Se puede y como puedo hacer mi consulta?
Gracias de antemano

marcoszorrilla 15-01-2007 08:18:15

Añade un campo calculado de tipo texto y en el evento OnCalcFields pones el código que compare el contenido del campo real para pasar al calculado el texto que corresponde "Disponible" o "Prestado".

Un Saludo.

richi 15-01-2007 14:01:58

Tambien si lo deseas lo puedes poner en el SELECT de la consulta.
En caso de ser access seria:
Código SQL [-]
IIF([status]='0','Disponible','Prestado') AS SABER_STATUS
En caso de ser oracle seria:
Código SQL [-]
decode(STATUS,0,'Disponible',1,'Prestado') SABER_STATUS

Para el resto de base de datos no se como seria.

marcoszorrilla 15-01-2007 15:39:00

En Paradox no quedaría más remedio que crear el campo calculado ya que no admite la sentencia IIF., Con Firebird si funcionaría....

Un Saludo.

ASAPLTDA 15-01-2007 17:04:38

hola
 
disculpa no tenego ejmplo pero en firbird 1.5 existe el case

roman 15-01-2007 18:59:21

Otra opción sería usar la propiedad DisplayValues del campo status. DisplayValues consiste de dos valores separados por ;. El primer valor es para los valores false y el segundo para los true.

Otra forma, si se quiere usar SQL, es así:

Código SQL [-]
select
substring('disponibleprestado' from 10*cast(status as numeric) + 1 for 10)
from tabla

que vale también para Paradox.

// Saludos

marcoszorrilla 15-01-2007 22:17:02

Siempre me gustaron las soluciones ingeniosas y al amigo Román hay que darle matrícula de honor.

Un Saludo.

marcoszorrilla 16-01-2007 16:36:03

Un pequeño problema con "DisplayValues", no es aplicable a los campos de tipo caracter, ni numéricos, si se quiere utilizar esta opción, un pequeño cambio:

Código SQL [-]
select Cast(Estado as Boolean) as NuevoNombre
From MiTabla

Román, sigue con matrícula.

Un Saludo.


La franja horaria es GMT +2. Ahora son las 18:56:24.

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