Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 25-02-2014
xalo xalo is offline
Miembro
 
Registrado: ene 2011
Posts: 18
Poder: 0
xalo Va por buen camino
ADOQuery que devuelva campo booleano...

Buenos dias a todos,
Estoy intentando que la siguiente consulta devuelva el campo 'Seleccionado' como booleano y no soy capaz:
Código SQL [-]
SELECT True as Seleccionado,Id,Nombre FROM Clientes

He probado lo siguiente, pero sigue sin identificar el campo como booleano
Código Delphi [-]
DM.Consulta.Active := False;
DM.Consulta.SQL.Text := 'SELECT True as Seleccionado,Id,Nombre FROM Clientes';
DM.Consulta.FieldDefs.Update;
DM.Consulta.fielddefs.Items[1].DataType := ftBoolean;
DM.Consulta.Active := True;

He provado con CAST y varias combinaciones y nada. El resultado que se obtiene es un -1 o 0. Seguramente será algo trivial pero no he sido capaz de verlo.
Se os ocurre alguna alternativa?

Gracias de antemano
Responder Con Cita
  #2  
Antiguo 25-02-2014
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.057
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
¿Y el campo "seleccionado" de qué tipo es y qué valores almacena?
Si es un campo numérico y contiene los valores 0 ó 1 (0.false 1.true) entonces tienes varias formas de hacerlo.
Código Delphi [-]
variablebooleana = "select seleccionado from clientes" = 1
Si seleccionado=1 entonces la variablebooleanda almacenará true, en caso contrario almacenará false.
Responder Con Cita
  #3  
Antiguo 25-02-2014
xalo xalo is offline
Miembro
 
Registrado: ene 2011
Posts: 18
Poder: 0
xalo Va por buen camino
El campo es de tipo boolean, para que salga un checkbox directo en un dbgrid sin tener que añadir más código. De hecho con sqlite lo tengo funcionando, ya que el wrapper que uso tiene un evento que cuando crea los campos el query (onInitFieldDef) donde le indicas que el campo Seleccionado sea de tipo ftBoolean.
En el caso del ADOQuery no veo la forma.

Gracias por tu interés
Responder Con Cita
  #4  
Antiguo 25-02-2014
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola xalo.

Según esta documentación Datatypes In SQLite:
Cita:
...
1.1 Boolean Datatype

SQLite does not have a separate Boolean storage class. Instead, Boolean values are stored as integers 0 (false) and 1 (true).
...
Entonces, como te comenta Casimiro, si logras que te devuelva el valor como entero la asignación es tán simple como:
Código Delphi [-]
  ...
  CheckBox1.Checked:= Boolean(DM.Consulta.FieldByName('SELECCIONADO').AsInteger);
  ...

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #5  
Antiguo 25-02-2014
xalo xalo is offline
Miembro
 
Registrado: ene 2011
Posts: 18
Poder: 0
xalo Va por buen camino
Buenas tardes,
Gracias por vuestras respuestas
Realmente lo que busco es que de forma directa reconozca el campo que creo en la consulta como boolean, para que al mostrar el dbgrid salga lo que se muestra en resultadodeseado.png
y no de la manera que se muestra en resultadoactual.png

Se que en el dbgrid se puede hacer que cambie el comportamiento, pero de la misma manera que hice con sqlite, intuyo que con adoquery habrá alguna forma más simple y directa también.

(Nota: En este ejemplo la columna en cuestion se llama SELE)

Gracias
Imágenes Adjuntas
Tipo de Archivo: png resultadoactual.png (6,7 KB, 2 visitas)
Tipo de Archivo: png resultadodeseado.png (7,0 KB, 2 visitas)
Responder Con Cita
  #6  
Antiguo 25-02-2014
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola xalo.

La verdad es que como no vemos el código donde asignas el valor es dificil darte una respuesta acertada. Como comentas mas arriba estas usando los componentes ADO, por lo que podrías hacer directamente:
Código Delphi [-]
...
  CheckBox1.Checked:=DM.Consulta.FieldByName('SELECCIONADO').AsBoolean;
...
No se me ocurre otra forma de asignar el valor de un campo a la propiedad Checked de un TCheckBox.

Me pregunto si no estarás hablando de un TDBCheckBox... Por que si es el caso, este último posee las propiedades ValueChecked y ValueUnChecked que podes configurar con los valores que desees que considere como verdadero y falso.

Por ejemplo para que interprete los valores 0 y 1 como False y True respectivamente:
Código Delphi [-]
...
  { Ambas propiedades estan publicadas }
  DBCheckBox1.ValueChecked  := '1';
  DBCheckBox1.ValueUnchecked:= '0';
...


Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
recorrer tabla y verificar Campo Booleano n03l Tablas planas 3 10-03-2012 00:00:05
Campo Booleano en MySQL cmfab Varios 5 29-12-2010 11:40:01
filtrar por campo booleano ale_metall Varios 4 03-10-2008 22:52:28
Funcion que devuelva la longitud de un campo en una SQL para BDE en Delphi7 Kivan SQL 5 20-05-2005 20:10:49
Ordenar un campo Booleano en MySQL Brewster MySQL 3 24-01-2005 10:52:38


La franja horaria es GMT +2. Ahora son las 14:03:23.


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