Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 19-03-2016
Avatar de darkbits
darkbits darkbits is offline
Miembro
 
Registrado: may 2006
Posts: 280
Poder: 18
darkbits Va por buen camino
como se trabaja con CheckBox1.Checked

Hola a todo el club
estoy trabajando con CheckBox1 que me da un TRUE o FALSE
quiero guardar CheckBox1.Checked en una DB mysql, en mi DB lo declare el campo como tinyint o hay alguien que guarda true o false?

cuando quiero guardar me da error les coloc
Código SQL [-]
     _DM.consulta1.close;
     _DM.consulta1.SQL.Text:='INSERT INTO USUARIOS(nombre_usuario,estado_usuario) values ('+QuotedStr(edit1.text)+','+QuotedStr(CheckBox1.Checked)+')';
     _DM.consulta1.ExecSQL;
     _DM.tusuarios.Refresh;
me sale eso "there is no overloaded version Of 'QuotedStr' that can be called with these arguments" y me apunta al CheckBox1.Checked

agradesco sus respuesta.
__________________
Gracias por su coloración club delphi

darkbits ;)
Responder Con Cita
  #2  
Antiguo 19-03-2016
Avatar de jhonny
jhonny jhonny is offline
Jhonny Suárez
 
Registrado: may 2003
Ubicación: Colombia
Posts: 7.058
Poder: 29
jhonny Va camino a la famajhonny Va camino a la fama
Siguiendo la manera en como lo estás haciendo y si usas una de las últimas versiones de Delphi, intenta:

Código Delphi [-]
   __DM.consulta1.close;
     _DM.consulta1.SQL.Text:='INSERT INTO USUARIOS(nombre_usuario,estado_usuario) values ('+QuotedStr(edit1.text)+','+QuotedStr(CheckBox1.Checked.ToString)+')';
     _DM.consulta1.ExecSQL;
     _DM.tusuarios.Refresh;

Si no:


Código Delphi [-]
  _DM.consulta1.close;
     _DM.consulta1.SQL.Text:='INSERT INTO USUARIOS(nombre_usuario,estado_usuario) values ('+QuotedStr(edit1.text)+','+QuotedStr(BoolToStr(CheckBox1.Checked))+')';
     _DM.consulta1.ExecSQL;
     _DM.tusuarios.Refresh;
__________________
Lecciones de mi Madre. Tema: modificación del comportamiento, "Pará de actuar como tu padre!"

http://www.purodelphi.com/
http://www.nosolodelphi.com/
Responder Con Cita
  #3  
Antiguo 19-03-2016
Avatar de darkbits
darkbits darkbits is offline
Miembro
 
Registrado: may 2006
Posts: 280
Poder: 18
darkbits Va por buen camino
jhonny

estoy trabajando con DX 10
la primera opción me funciono de maravilla

me sale esto:
CheckBox1.Checked esta en TRUE me me guarda -1
CheckBox1.Checked esta en FALSE me me guarda 0

en la DB lo puse el campo type "Varchar" hay algun tipo que soporta 0 o 1 ? o true o false ?
__________________
Gracias por su coloración club delphi

darkbits ;)
Responder Con Cita
  #4  
Antiguo 19-03-2016
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
En mysql creo que sí.
Responder Con Cita
  #5  
Antiguo 19-03-2016
Avatar de AgustinOrtu
[AgustinOrtu] AgustinOrtu is offline
Miembro Premium
NULL
 
Registrado: ago 2013
Ubicación: Argentina
Posts: 1.858
Poder: 15
AgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en bruto
Usa parametros y que los componentes se encargen de hacer el trabajo sucio de convertir el boolean a la representacion que le gusta a mysql
Responder Con Cita
  #6  
Antiguo 19-03-2016
Avatar de darkbits
darkbits darkbits is offline
Miembro
 
Registrado: may 2006
Posts: 280
Poder: 18
darkbits Va por buen camino
cuando guardo esto QuotedStr(BoolToStr(CheckBox1.Checked))
si CheckBox1 esta en TRUE Guarda -1
si CheckBox1 esta en FALSE Guarda 0

no debería ser true 1 y false 0 ?
mi campo de DB lo puse varchar para no complicarme ya q no encontre alguien que guarde true o false o 1 o 0
__________________
Gracias por su coloración club delphi

darkbits ;)
Responder Con Cita
  #7  
Antiguo 19-03-2016
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Yo siempre uso 0/1
Mira si tu checkbox tiene alguna propiedad para los valore true y false.
Responder Con Cita
  #8  
Antiguo 19-03-2016
Avatar de AgustinOrtu
[AgustinOrtu] AgustinOrtu is offline
Miembro Premium
NULL
 
Registrado: ago 2013
Ubicación: Argentina
Posts: 1.858
Poder: 15
AgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en bruto
Cita:
Empezado por darkbits Ver Mensaje
cuando guardo esto QuotedStr(BoolToStr(CheckBox1.Checked))
si CheckBox1 esta en TRUE Guarda -1
si CheckBox1 esta en FALSE Guarda 0

no debería ser true 1 y false 0 ?
mi campo de DB lo puse varchar para no complicarme ya q no encontre alguien que guarde true o false o 1 o 0
Supongo que será por la representacion binaria a bajo nivel

El tipo Boolean esta representado internamente como un byte:

False = 00000000 binario = 0 decimal
True = 11111111 binario = -1 decimal

El primer bit indica signo (1 negativo, 0 positivo)
Responder Con Cita
  #9  
Antiguo 19-03-2016
Avatar de darkbits
darkbits darkbits is offline
Miembro
 
Registrado: may 2006
Posts: 280
Poder: 18
darkbits Va por buen camino
hay alguna forma que el CheckBox me de directamente:

true= 1
false= 0

configurando alguna propiedad?
__________________
Gracias por su coloración club delphi

darkbits ;)
Responder Con Cita
  #10  
Antiguo 19-03-2016
Avatar de AgustinOrtu
[AgustinOrtu] AgustinOrtu is offline
Miembro Premium
NULL
 
Registrado: ago 2013
Ubicación: Argentina
Posts: 1.858
Poder: 15
AgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en bruto
Olvidate del Checkbox, estas trabajando con el tipo Boolean

El problema no es el tipo Boolean. El problema es que en la base le pusiste varchar

Si buscas en la documentacion, a partir de determinada version introdujeron el tipo BIT que es un alias de TINYINT(1). Dentro de los TINYINT, el valor 0 es considerado False, el resto son True

Luego, desde Delphi, no tiene porque importarte como MYSQL maneja el tipo Boolean

Usa parametros en tus consultas y comandos sql

Código Delphi [-]
var
  qry: TADOQuery;
begin
  qry := TADOQuery.Create(NIL);
  try
   // grabar en la BD
   qry.SQL.Text := 'INSERT INTO Tabla (Flag) VALUES (:Flag) ';
   qry.Parameters.ParamByName('Flag').DataType := ftBoolean;
   qry.Parameters.ParamByName('Flag').Value := CheckBox1.Checked;

   // recuperar valor
   qry.SQL.Text := 'SELECT * FROM Tabla';
   qry.Open;
   CheckBox1.Checked := qry.FieldByName('Flag').AsBoolean;     
  finally
    qry.Free;
  end;
end;
Responder Con Cita
  #11  
Antiguo 19-03-2016
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
El dbcheckbox sí que lo tiene.
Pero creo que te estás complicando mucho, o quizás no entiendo qué estás haciendo.
Para conseguir uno o cero es simple:
Código Delphi [-]
if elcheckbox.checked then iVariable=1 else iVariable=0;
Responder Con Cita
  #12  
Antiguo 19-03-2016
Avatar de AgustinOrtu
[AgustinOrtu] AgustinOrtu is offline
Miembro Premium
NULL
 
Registrado: ago 2013
Ubicación: Argentina
Posts: 1.858
Poder: 15
AgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en bruto
Me falto el ejemplo de filtrar:


Código Delphi [-]
  qry.SQL.Text := 'SELECT * FROM Tabla WHERE Flag = :Flag';
  qry.Parameters.ParamByName('Flag').DataType := ftBoolean;
  qry.Parameters.ParamByName('Flag').Value := Checkbox1.Checked;
  qry.Open;
Responder Con Cita
  #13  
Antiguo 20-03-2016
Avatar de darkbits
darkbits darkbits is offline
Miembro
 
Registrado: may 2006
Posts: 280
Poder: 18
darkbits Va por buen camino
solucionado

utilice los 3 últimos ejemplos del post y si funciona mil gracias Casimiro, agustin y jhony
__________________
Gracias por su coloración club delphi

darkbits ;)
Responder Con Cita
  #14  
Antiguo 20-03-2016
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.
Cita:
Empezado por darkbits Ver Mensaje
hay alguna forma que el CheckBox me de directamente:

true= 1
false= 0

configurando alguna propiedad?
Para obtener el valor entero (0/1) desde un TCheckBox:
Código Delphi [-]
   valor := Integer(tuCheckBox.Checked);
Sin embargo, creo que el componente mas adecuado para manejar la entrada de datos no es el TCheckBox sino el TDBCheckBox. A él podes asociar directamente la columna en cuestión y tiene las propiedades ValueChecked y ValueUncheck en las que podes definir el tipo de dato resultante.

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
¿Cómo trabaja un Timer? rcuevas C++ Builder 15 27-05-2014 01:23:07
como guardar en postgresql (como trabaja el datamodule) mematanlimon Lazarus, FreePascal, Kylix, etc. 0 15-02-2010 19:06:12
Como se trabaja con ejecutables? alloger C++ Builder 2 13-10-2006 12:42:54
Cambiar el estado de un RadioButton......"Checked o no Checked" chileno Varios 3 29-04-2006 22:34:18
Como se trabaja la Clausula Like en delphi Shidalis OOP 4 26-08-2005 16:18:51


La franja horaria es GMT +2. Ahora son las 13:37: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
Copyright 1996-2007 Club Delphi