Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   SQL boolean poner SI/NO (https://www.clubdelphi.com/foros/showthread.php?t=40963)

tarco35 03-03-2007 10:53:15

SQL boolean poner SI/NO
 
Saludos... tengo una tabla paradox que posee un campo boolean, le hago una consulta mediante sql y muestro los resultados en un grid. ¿hay forma de que el campo tipo boolean me muestre SI/NO en vez de TRUE/FALSE.
Gracias por su ayuda.

Lepe 03-03-2007 13:18:56

Tendrás que cambiar el tipo del campo a String de 2 carácteres (yo lo hago siempre, aunque hay gente que opina que no debe hacerse).

El DBCheckBox tiene las siguientes propiedades:
valueChecked = Si
ValueUncheckd = No

Estableciendo esas dos simples propiedades, hará que escriba el texto correspondiente en la Base de Datos.

Así en listados, informes para imprimir, etc, siempre muestra el texto Si/No

Consecuencia directa:
Cada vez que quieras conocer el valor tienes que usar:
Código Delphi [-]
const const_si = 'Si';
const const_no= 'No';

begin
  if table1.Fieldbyname('pagado').AsString = const_si then
    lo que sea

Saludos

Lepe 03-03-2007 13:21:17

La otra opción es capturar el evento OnGetText del TField y ahí cambiar el texto por lo que quieras.

El campo sigue siendo un Boolean, pero "engañas a la aplicación" para poner otro texto.

Saludos

AGAG4 03-03-2007 17:21:41

Si existiera algo como el CASE dentro del paradox, que yo uso mucho en firebird te ayudaría muchisimo....
ejemplo:
Código SQL [-]
Select Case Campo When True then 'Si' Else 'No' End From Tabla

Saludos....

roman 03-03-2007 17:33:17

También puede usar la propiedad DisplayValues del TBooleanFields:

Código Delphi [-]
Table1Campo.DisplayValues := 'Sí;No';

No veo conveniente usar strings. Simplemente, una consulta como

Código SQL [-]
select * from personas
where casado = 'si'

será más lenta que su contrapartida booleana:

Código SQL [-]
select * from personas
where casado = true

porque es más tardado comparar cadenas. Y en el caso de Paradox, pues...

La opción de Alfredo no es válida en Paradox, aunque puede simularse.

// Saludos

tarco35 04-03-2007 18:08:54

Resuelto
 
Como la sentencia SQL la uso para realizar un filtro a la tabla paradox he usado la propiedad DisplayValues que citaba ROMAN... va de lujo en mi caso... muchas gracias por el interes mostrado.


La franja horaria es GMT +2. Ahora son las 22:26:21.

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