Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 29-06-2005
jgutti jgutti is offline
Miembro
 
Registrado: may 2003
Posts: 189
Poder: 22
jgutti Va por buen camino
Campo Boolean en Interbase

Hola al foro
¿como defino un campo boolean en una tabla de Interbase 6.0?

atte

jgutti
Responder Con Cita
  #2  
Antiguo 29-06-2005
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 28
jachguate Va por buen camino
Interbase no tiene soporte directo para el tipo boolean en las tablas. De hecho el tipo boolean está marcado como "opcional" en el estándar. Lo usual es definir campos enteros con valores 0 = Falso y 1 (o <> 0 ) = Verdadero.

También hay quienes manejan un campo char(1) con valores 'T' o 'V' = Verdadero y 'F' = Falso...

Esto no debe sorprenderte; de hecho, el tipo boolean no existe en la muchos motores...

http://troels.arvin.dk/db/rdbms/#data_types-boolean

Hasta luego.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #3  
Antiguo 29-06-2005
cuscus cuscus is offline
Miembro
 
Registrado: abr 2005
Posts: 45
Poder: 0
cuscus Va por buen camino
para tener un campo boolean debes irte a la version 7 de interbase
Responder Con Cita
  #4  
Antiguo 30-06-2005
Avatar de Rufus
Rufus Rufus is offline
Miembro
 
Registrado: may 2004
Ubicación: Canarias
Posts: 193
Poder: 21
Rufus Va por buen camino
La solución estándar siempre es esta:

Crea un dominio tal que así:
Código SQL [-]
 CREATE DOMAIN T_BOOLEAN AS
SMALLINT
DEFAULT 0
NOT NULL
CHECK (value in (0,1));
Luego donde te haga falta utilizas este nuevo tipo de datos. Se hace pasar bien por un boolean ya que en cualquier sitio generalmente se interpreta que si hay un 0 (cero) es 'FALSE' y cualquier otro valor distindo de 0 es 'TRUE'.
__________________
Milo
Responder Con Cita
  #5  
Antiguo 30-06-2005
Avatar de vic_ia
vic_ia vic_ia is offline
Miembro
 
Registrado: ene 2004
Posts: 238
Poder: 21
vic_ia Va por buen camino
Hola...

esto haciendo algo mas o menos como lo que se comenta en este hilo, solo que tomando los valores contrarios respecto como comenta ...
Cita:
Empezado por Rufus
Se hace pasar bien por un boolean ya que en cualquier sitio generalmente se interpreta que si hay un 0 (cero) es 'FALSE' y cualquier otro valor distindo de 0 es 'TRUE'.
¿en verdad puedo tomar como "general" estos valores (0=false, 1=true), repito yo los estoy tomando al contrario considerando que hay funciones que si todo va bien te regresan 0 y si hay un error te devuelven el numero del error?... de antemano gracias por sus comentarios...

saludos...
Responder Con Cita
  #6  
Antiguo 30-06-2005
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Pues no, claro que no. El comentario de Rufus vale únicamente en el contexto que aquí se trata: valores booleanos. Entiéndase esto no como el tipo de datos explícito que puede o no existir, sino como el concepto de falso y verdadero. En esta perspectiva, una función como la que describes no regresa valores booleanos.

// Saludos
Responder Con Cita
  #7  
Antiguo 01-07-2005
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 28
jachguate Va por buen camino
Cool

Cita:
Empezado por vic_ia
Hola...

esto haciendo algo mas o menos como lo que se comenta en este hilo, solo que tomando los valores contrarios respecto como comenta ...
¿en verdad puedo tomar como "general" estos valores (0=false, 1=true), repito yo los estoy tomando al contrario considerando que hay funciones que si todo va bien te regresan 0 y si hay un error te devuelven el numero del error?... de antemano gracias por sus comentarios...

saludos...
Esta "tradición" entiendo que viene del lenguaje C, donde 0=falso y 1 = verdadero.

En Delphi, la representación binaria del tipo booleano se corresponde de la misma manera, de tal cuenta que al usarla podrias aplicar directamente un molde booleano a los valores enteros:

Código Delphi [-]
Var
  BooleanoEntero : Integer;
  Booleano : Boolean;

Begin
  BooleanoEntero := 0;
  Booleano := Boolean(BoleanoEntero); // Toma falso:
  if not Booleano Then
    ShowMessage('Realmente tiene falso!');
  BooleanoEntero := 1;
  Booleano := Boolean(BooleanoEntero); // Toma verdadero:
  if Booleano Then
    ShowMessage('Ahora tiene verdadero!');
  // moldeado directo:

  if Boolean(MiTablaCampoBooleano.AsInteger) Then
    ShowMessage('En la base de datos tiene almacenado 1 = verdadero');
end;

Hasta luego.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #8  
Antiguo 01-07-2005
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por jachguate
Esta "tradición" entiendo que viene del lenguaje C, donde 0=falso y 1 = verdadero
En realidad la tradición es 0=falso y no 0=verdadero, es decir, se toma como verdadero cualquier cosa que no sea cero. Incluso en Delphi, puedes poner BooleanoEntero := 84 y Boolean(BoolanoEntero) evalúa a true.

Pero como dije antes, esto no aplica a lo que describe vic_ia. Lo cierto es que la API de Windows tiene esa mala costumbre; en algunos casos el valor 0 significa que hay error y en otras al contrario.

// Saludos
Responder Con Cita
  #9  
Antiguo 01-07-2005
Avatar de vic_ia
vic_ia vic_ia is offline
Miembro
 
Registrado: ene 2004
Posts: 238
Poder: 21
vic_ia Va por buen camino
hola...

gracias a jachguate y roman por sus comentarios...

he decidido cambiar la forma en que estoy tomando los valores, sobre todo por lo que comenta jachguate y facilitarme el trabajo cuando utilice esos valores en mis programas...

nuevamente muchas gracias a los dos...

saludos...
Responder Con Cita
  #10  
Antiguo 14-11-2005
Rogersito Plus Rogersito Plus is offline
Miembro
 
Registrado: oct 2005
Posts: 35
Poder: 0
Rogersito Plus Va por buen camino
Campo Boolean...

Estimados Amigos del Foro en mi caso tengo un dominio que esta declarado asi:
CREATE DOMAIN "LOGICO" AS SMALLINT
default 0
check(value in(0,1)) NOT NULL;


mi tabla tiene el campo/columna: ACTIVAR LOGICO,

Mi consulta es como utilizarlo?, visualizar en un control DBCheckBox... y este al cambiar cambie mis datos de mi tabla. ...
Responder Con Cita
  #11  
Antiguo 14-11-2005
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
El DBCheckBox tiene dos propiedades:

- ValueChecked (ponle el 1)
- ValueUnchecked (ponle el 0)

Cuando lo marques, escribirá el 1 en la base de datos, y cero cuando lo dejes en blanco escribirá un 0.

saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #12  
Antiguo 14-11-2005
Rogersito Plus Rogersito Plus is offline
Miembro
 
Registrado: oct 2005
Posts: 35
Poder: 0
Rogersito Plus Va por buen camino
Ok...

Te agradezco Lepe por la ayuda... funciona perfectamente...
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 19:50:39.


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
Copyright 1996-2007 Club Delphi