Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 28-11-2003
Alfredo Alfredo is offline
Miembro
 
Registrado: nov 2003
Ubicación: Valencia, Venezuela
Posts: 234
Poder: 21
Alfredo Va por buen camino
Angry 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
Responder Con Cita
  #2  
Antiguo 28-11-2003
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 27
delphi.com.ar Va por buen camino
¿¿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.
Responder Con Cita
  #3  
Antiguo 29-11-2003
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
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
Responder Con Cita
  #4  
Antiguo 30-11-2003
Alfredo Alfredo is offline
Miembro
 
Registrado: nov 2003
Ubicación: Valencia, Venezuela
Posts: 234
Poder: 21
Alfredo Va por buen camino
Gracias a ambos, voy a hacer la prueba y les cuento.
__________________
if Vivir = Vivir + Aprender then Aprender = ?
Alfredo Borges
Responder Con Cita
  #5  
Antiguo 03-12-2003
Alfredo Alfredo is offline
Miembro
 
Registrado: nov 2003
Ubicación: Valencia, Venezuela
Posts: 234
Poder: 21
Alfredo Va por buen camino
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
Responder Con Cita
  #6  
Antiguo 03-12-2003
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
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 () 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

Última edición por Lepe fecha: 03-12-2003 a las 08:54:25.
Responder Con Cita
  #7  
Antiguo 03-12-2003
Avatar de Voutarks
Voutarks Voutarks is offline
Miembro
 
Registrado: jul 2003
Ubicación: Islas Canarias
Posts: 118
Poder: 21
Voutarks Va por buen camino
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
Responder Con Cita
  #8  
Antiguo 03-12-2003
Alfredo Alfredo is offline
Miembro
 
Registrado: nov 2003
Ubicación: Valencia, Venezuela
Posts: 234
Poder: 21
Alfredo Va por buen camino
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
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 23:32:28.


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