Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   CheckBox y Campos Boolean (https://www.clubdelphi.com/foros/showthread.php?t=5648)

Alfredo 28-11-2003 15:16:15

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.
:confused:

delphi.com.ar 28-11-2003 15:26:11

¿¿Esta es tu duda??
Código:

Field.AsBoolean := CheckBox1.Checked;

Lepe 29-11-2003 14:04:32

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

Alfredo 30-11-2003 19:19:29

Gracias a ambos, voy a hacer la prueba y les cuento.

Alfredo 03-12-2003 00:17:08

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.

Lepe 03-12-2003 08:48:45

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:

pero creo que se me complicara todo con un codigo mas largo y no se si sera mas lento
Si yo uso la funcion de delphi 6 (:D) BoolToStr no tiene mas remedio que ejecutarse el codigo de esas funciones no?? por tanto será igual de largo/ eficiente que si tu creas esas funciones y las pones en una unidad aparte. Usando las funciones unicamente ganas en claridad en el codigo fuente, nada más.

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

Voutarks 03-12-2003 15:02:56

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.

Alfredo 03-12-2003 16:53:08

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...


La franja horaria es GMT +2. Ahora son las 12:54:33.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi