Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   Existe en Firebird 2.0 el tipo Boolean (https://www.clubdelphi.com/foros/showthread.php?t=46753)

Chogo 07-08-2007 23:56:22

Existe en Firebird 2.0 el tipo Boolean
 
Hola, estoy usando Firebird, pero no veo que no existe un tipo booleano :eek:.
Estoy equivocado o en realida no hay tipo boolean:confused:

Saludos

egostar 08-08-2007 00:03:06

La respuesta es NO, no existe ese tipo.

Salud OS.

Chogo 08-08-2007 01:03:50

¿ Entonces que puedo hacer cuando necesite un campo boolean ?

egostar 08-08-2007 03:05:59

Cita:

Empezado por Chogo (Mensaje 221436)
¿ Entonces que puedo hacer cuando necesite un campo boolean ?

Puedes usar el concepto de los números binarios, de hecho es lo que se recomienda, 1 y 0 que serían Verdadero y Falso ó Falso y Verdadero, como gustes.

Salud OS.

AzidRain 08-08-2007 03:44:40

Aunque yo uso MySQL y en teoría ya trae ese tipo nunca me ha funcionado, prefiero irme a la antigüita con los 1s y 0s. Al cabo que Delphi los toma como boolean si es necesario.

Delphius 08-08-2007 08:22:27

Otra opción, que suele ser un poco más elegante (a mi modo de ver) es tener un dominio:

Código SQL [-]
CREATE DOMAIN BOOLEANO AS
CHAR(2) NOT NULL
CHECK(VALUE IN ('SI', 'si', 'NO', 'no'));

Y con esto ya me devuelve un SI o NO y hay que estar "traduciendo" 1 y/o 0.
Saludos,

Chogo 08-08-2007 17:31:21

Ok, Gracias por sus repuestas :)
Saludos.

santiago14 01-05-2011 16:25:12

Cita:

Empezado por Delphius (Mensaje 221490)
Otra opción, que suele ser un poco más elegante (a mi modo de ver) es tener un dominio:

Código SQL [-]
CREATE DOMAIN BOOLEANO AS
CHAR(2) NOT NULL
CHECK(VALUE IN ('SI', 'si', 'NO', 'no'));

Y con esto ya me devuelve un SI o un NO y no hay que estar "traduciendo" 1 y/o 0.
Saludos.

La verdad es que es mas elegante, y soluciona el tema del booleano. Bueno, gracias de nuevo.

Casimiro Notevi 01-05-2011 16:52:00

Yo lo hago así:

Código SQL [-]
create domain domSiNo smallint default 0 check (value between 0 and 1); /* 0-No, 1-Si*/

marcoszorrilla 01-05-2011 17:54:27

Pues yo uso esta otra, muy parecida a lo propuesto por cierto:

Cita:

/*Para utilizar con los campos lógicos que ahora serán S/N */
Create Domain Dm_Boolean
As Char(1)
Default 'N' Not Null
Check (Value IN ('S','N'));
Un Saludo.

santiago14 02-05-2011 16:37:54

Todas las propuestas están realmente buenas. A mi entender, una forma que sea un poco mas amable con el programador es la que uno debería considerar con mayor prioridad.
Por eso la solución de Delphius me pareció bastante acertada. Sin embargo reconozco que las otras formas están bastante buenas.

Saludos, Santiago.

Casimiro Notevi 02-05-2011 17:13:48

Sin desmerecer ninguna de las opciones propuestas, pienso que la opción de Marcoszorrilla es más cómoda que la de Delphius (no es nada personal :D), porque está obligando a contestar tecleando 2 letras, ejemplo, ante una pregunta como:
¿Está seguro de eliminar (S/N)?
El usuario tendría que contestar con dos teclas: si

Además en ambos casos, las de marcos y delphius no pasarían algunos filtros que hay que añadirles, el de las mayúsculas o minúsculas:
Marcoszorrilla: Create Domain Dm_Boolean As Char(1) Default 'N' Not Null Check (Value IN ('S','N'));
Delphius:CREATE DOMAIN BOOLEANO AS CHAR(2) NOT NULLCHECK(VALUE IN ('SI', 'si', 'NO', 'no'));

En el primero hay que controlar que sea upper de lo tecleado y en el segundo caso que no conteste Si, sI, No, nO, sí, Sí

Por lo tanto el ganador es... create domain domSiNo smallint default 0 check (value between 0 and 1)

La respuesta de casimiro... ¡¡¡bien!!! :D:D:D

marcoszorrilla 02-05-2011 17:47:48

Hay que tener en cuenta que yo presento al usuario un Cuadro Combinado con las opciones S y N por lo que no tiene que teclear nada, solamente elegir y sino elige nada pues ya es "N", por defecto.

¿Cuál es la mejor opción?

Pues la de Casimiro que es el único que se ha atrevido a decirlo.

Un Saludo.

Casimiro Notevi 02-05-2011 18:05:08

Cita:

Empezado por marcoszorrilla (Mensaje 398575)
Hay que tener en cuenta que yo presento al usuario un Cuadro Combinado con las opciones S y N por lo que no tiene que teclear nada, solamente elegir y sino elige nada pues ya es "N", por defecto.
¿Cuál es la mejor opción?
Pues la de Casimiro que es el único que se ha atrevido a decirlo.
Un Saludo.

Bueno, pero lo decía de broma, no vayan a pensar que me autodeclaro "el mejor". Además, el motivo es fácil de probar, normalmente al usuario se le pide, por ejemplo, que elija entre dos botones que pone 'Sí' y 'No', pero no tiene que teclear nada, somos nosotros luego los que tenemos que controlar qué botón ha pulsado para guardar el la BD una 'S' o una 'N', un 'SI' o un 'NO', o un '0' o un '1'. O sea, es indiferente escoger una opción de simular un boolean u otra opción porque lo controlamos nosotros "por debajo".

marcoszorrilla 02-05-2011 18:14:29

Jeje, lo mío también era broma, lo mejor es que el usuario mueva la cabeza en un sentido o en otro y sea el programa quien interprete lo que ha querido decir.

Aunque estoy pensando que el "Reconocimiento de gestos" chocaría con una persona de movilidad diferente en el cuello, por ejemplo porque lleva un "collarín".

No se???????

Un Saludo.

Casimiro Notevi 02-05-2011 18:20:26

Habría que saber si en todos los idiomas significa lo mismo el movimiento de cabeza:
Movimiento horizontal... NO
Movimiento vertical...... SI
:D

marcoszorrilla 02-05-2011 18:26:56

Jeje, ahí le has dado pues resulta que en Bulgaria es justamente al revés, así que habría que configurarlo de forma distinta.

Set gestus testae sensu contrario ab normalem.


Un Saludo.

Casimiro Notevi 02-05-2011 18:37:13

¡¡¡Estos búlgaros!!!, bueno, de momento que inclinen la cabeza 90º para un lado y así funcionará bien el sistema :D

santiago14 02-05-2011 18:37:23

Cita:

Empezado por Casimiro Notevi (Mensaje 398573)
Sin desmerecer ninguna de las opciones propuestas, pienso que la opción de Marcoszorrilla es más cómoda que la de Delphius ...

........

La respuesta de casimiro... ¡¡¡bien!!! :D:D:D

Totalmente de acuerdo, por eso puse que, a mi entender, la de Delphius me parecía mejor.
Igualmente, ha sido muy instructivo el debate acerca de los Booleanos, tengo entendido que Firebird 3 los tendrá incluído, espero que sea así.
Saludos.

Delphius 03-05-2011 01:30:23

¿Y ahora?

Código SQL [-]
CREATE DOMAIN BOOLEANO AS
CHAR(2) NOT NULL
CHECK(VALUE IN ('SI', 'si', 'NO', 'no', 'Si', 'sI', 'No', 'nO', 'S', 'N', 's', 'n', '0' '1'));

:D:p

Saludos,

Sea cual fuese el método elegido... de alguna u otra manera debemos controlarlo en el aplicativo así que nadie se salva.

Saludos,


La franja horaria es GMT +2. Ahora son las 19:24:03.

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