FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
CheckBox y Campos Boolean
Saludos a todos...
Estoy programando con delphi un pequeño sistema en el que utiliso CheckBox en el formulario para que el usuario marque si se se posee una caracteristica o lo deje en blanco si no; el caso es que cree en la base de datos (en Paradox) el campo que se relaciona con dicho control como Booleano y cuando deseo hacer un insert al query que guarda los datos, no encuentro un convertidor para ese tipo de dato para hacer la sentencia, como en el caso de los integert o dates(InttoStr(), DatetoStr()). Puede alguien darme una sugerencia al respecto. Tengo dos dias buscando en los foros pasados y .... o soy muy neofito o el unico que se le apresentado este problema (no creo) Gracias de antemano.
__________________
if Vivir = Vivir + Aprender then Aprender = ? Alfredo Borges |
#2
|
||||
|
||||
¿¿Esta es tu duda??
Código:
Field.AsBoolean := CheckBox1.Checked;
__________________
delphi.com.ar Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla. |
#3
|
||||
|
||||
o esta otra ??
BoolToStr( true, true); StrToBool('true'); Revisa la ayuda, ya que te puede interesar usar : sysutils.Trueboolstr := 'Si'; sysutils.Falseboolstr := 'No'; ... los nombres son de memoria... espero no equivocarme mucho Saludos |
#4
|
|||
|
|||
Gracias a ambos, voy a hacer la prueba y les cuento.
__________________
if Vivir = Vivir + Aprender then Aprender = ? Alfredo Borges |
#5
|
|||
|
|||
Ok, he probado la sugerencia de Delphi.com.ar (perdon por lo impersonal) y aunque funciona, creo que no seria tan flexible como quisiera (digo creo), porque lo que estoy buscando es una sentencia INSERT, algo como:
query.sql.add('Insert into BasedeDatos (Codigo, Producto, Estado) values (' + IntToStr(iCodigo)+', '+editProducto.text+', '+BooleanToStr(CheckboxEstado.Checked)+')') donde icodigo => variable entera EditProducto.Text => Cadena BooleanToStr() => Una funcion que transforme Boolean a Str. Y CheckboxEstado => si el producto cumple o no una condicion. La idea es optener la flexibilidad de SQL sin tanto codigo a fin de hacer una migración mas sencilla una base de datos SQL (actualmente estoy programando en local con Paradox). Las funciones propuestas por Lepe me llamaron la atención, pero descubri que mi versión de delphi no las tiene (versión 2.0). Una idea que se me ocurrio fue crear una función de conversión a texto y su inversa, por ejemplo: if ckboxEstado.checked then sVariable := 'True' else sVariable := ´False'; pero creo que se me complicara todo con un codigo mas largo y no se si sera mas lento, Acepto humildemente las sugerencias que ustedes siendo expertos me puedan brindar porque yo me estoy estrenando en programacion Visual y preferi a delphi como software de desarrollo. gracias anticipadamente.
__________________
if Vivir = Vivir + Aprender then Aprender = ? Alfredo Borges |
#6
|
||||
|
||||
En cuanto a la funcion BoolTostr no creo que sea tan grave como parece no??
File --> New -->Unit y reemplaza el contenido con este codigo: Código:
unit CodigoUtil; interface uses SysUtils; var TrueStr, FalseStr: string; function BoolToStr( AValue:Boolean;const UseStrings:Boolean= true):string; function StrToBool( Avalue: String; const UseStrings:Boolean = true):Boolean; implementation function BoolToStr( AValue:Boolean;const UseStrings:Boolean= true):string; begin if UseStrings then begin if Avalue then Result := trueStr else Result := falseStr; end else if Avalue then Result := 'TRUE' else Result := 'FALSE'; end; function StrToBool( Avalue: String; const UseStrings:Boolean = true):Boolean; begin if UseStrings then begin Result := ( uppercase(TrueStr) = uppercase(Avalue)) end else Result := (uppercase(Avalue) = 'TRUE'); end; initialization TrueStr := 'Si'; FalseStr:= 'No'; end. Cita:
si un programa ha de llamar a una funcion con 1 o 2 parametros y realizar un par de if.... tampoco es que gaste muchos recursos.... y evaluar un par de if tampoco lleva tanto tiempo de CPU y más cuando los equipos de hoy en día tienen tropocientos Megahercios... (es mi opinion, claro) //Saludos Última edición por Lepe fecha: 03-12-2003 a las 08:54:25. |
#7
|
||||
|
||||
Yo lo que hago en los programas, porque tambien utilizo sentencias insert o update es, como dice lepe, comprobar con un if el estado del checkbox justo antes de construir y enviar la sentencia.
Y puedes estar seguro de que poner un par de if en un código no te va a afectar absolutamente para nada en el rendimiento, la verdad es que me sorprende mucho que puedas pensar eso, no lo veía desde que vivíamos en la época de los ordenadores de 16 bits (y ya hace bastantes años de eso). Lo que afecta al rendimiento del programa es cómo manejes los datos desde el mismo, no ese tipo de cuestiones.
__________________
Emilio J. Curbelo |
#8
|
|||
|
|||
Nuevamente gracias.
Voy a probar el codigo que me propuso Lepe. Agradezco tambien sus opiniones sobre el uso de las sentencias, y la paciencia que le tienen a los novatos. Despues les comunico como me fue...
__________________
if Vivir = Vivir + Aprender then Aprender = ? Alfredo Borges |
|
|
|