Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Asignar propiedad radio en campo boolean (https://www.clubdelphi.com/foros/showthread.php?t=81601)

radenf 29-11-2012 02:07:47

Asignar propiedad radio en campo boolean
 
Hola amigos:

Tengo en una tabla de una base de datos Access un campo boolean (Sí/No) y necesito que al chequear uno de los registros en un DBGrid el resto de los registros automaticamente queden uncheked, similar a la propiedad radio de un radiogroup.
¿Es posible?
Utilizo D2007
Saludos y muchas gracias por sus aportes.

Caral 29-11-2012 02:10:05

Hola
No entiendo la relacion del campo con lo demas ?.
Saludos

ecfisa 29-11-2012 03:41:57

Hola radenf.

No conozco la sintáxis de Access, pero proba de este modo:
Código Delphi [-]
 with QryTmp do
  begin
    Close;
    SQL.Clear;
    SQL.Add('UPDATE TABLA SET CPO_BOOLEAN = (');
    SQL.Add('CASE WHEN (ID = :PID) THEN TRUE ELSE FALSE END)');
    ParamByName('PID').Value:= tuValor_ID; // Por ej: el actualmente seleccionado
    ExecSQL;
  end;

Si no soporta el modo anterior, de este tendría que funcionar:
Código Delphi [-]
  with QryTmp do
  begin
    Close;
    // Todos los campos en falso
    SQL.Text:= 'UPDATE TABLA SET CPO_BOOLEAN = FALSE';
    ExecSql;
    // El campo deseado en true
    SQL.Text:= 'UPDATE ATABLA SET CPO_BOOLEAN = TRUE WHERE ID = :PID';
    ParamByName('PID').AsString:= tuValor_ID; // Por ej: el actualmente seleccionado
    ExecSql;
  end;

Saludos.

radenf 29-11-2012 11:01:27

Muchas gracias ecfisa .
Voy a probar y te cuento.
Saludos

radenf 29-11-2012 11:20:02

Utilizé el siguiente código en el evento OnClick del CheckBox (Con False como default)

Código Delphi [-]
with QueryServ do
  begin
    Close;
    // Todos los campos en falso
    QueryServ.SQL.Text:= 'UPDATE Servidores SET ACTIVO = FALSE';
    ExecSql;
    // El campo deseado en true
    QueryServ.SQL.Text:= 'UPDATE Servidores SET ACTIVO = TRUE WHERE ID = :PID';
    QueryServ.Parameters.ParamByName('PID').Value:= serverbox.Checked; // Por ej: el actualmente seleccionado
    ExecSql;

y me entrega el siguiente error:

No se han especificado valores para algunos de los parámetros requeridos.
---------------------------
Aceptar
---------------------------

ecfisa 29-11-2012 18:34:37

Hola radenf.

Como te dije anteriormente no manejo Access, pero en este [enlace] se trata un error parecido, y los masters Caral y egostar hacen unas observaciones interesantes al respecto. Tal vez te pueda ayudar a resolverlo.

Saludos. :)

radenf 29-11-2012 23:29:14

No funciona.
Exploraré otras opciones.
Muchas gracias
Salu2

radenf 16-08-2013 19:19:46

Finalmente logré lo que buscaba.
Utilizé el siguiente código en la propiedad OnCheckBoxChange del TMS AdvDBGrid, al hacer click en la primera columna, que corresponde a un campo booleano.

Código Delphi [-]
begin
if (ACol= 1) then
begin
QueryServ.Close;
QueryServ.SQL.Text:= 'Select * from Servidores';
QueryServ.SQL.Text:= 'UPDATE Servidores SET ACTIVO = FALSE';
QueryServ.ExecSql;
Data1.TablaServidores.Refresh;
DBAdvGrid3.Update;

Saludos y ojalá a alguien más le pueda servir.


La franja horaria es GMT +2. Ahora son las 18:07:15.

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