Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Mostrar campos de una tabla en un DBRadioGroup (https://www.clubdelphi.com/foros/showthread.php?t=89896)

GUN10 25-02-2016 09:47:04

Mostrar campos de una tabla en un DBRadioGroup
 
Hola buenas noches!

Les comento que estoy trabajando con delphi 7 y una base de datos en mysql y se me preseta el siguiente problema.

He definido 3 tablas

-Usuarios (Usuarios que seran registrados en el sistema)
-Perfiles (ejemplo, administrador, operador, tecnico)
-Perfiles_usuarios (La cual me permite relacionar las 2 tablas anteriores por medio de sus 2 claves primarias)

Tengo realizada una ventana donde realizo el alta, baja, modificacion y eliminacion de los perfiles.
Ahora estoy realizando lo que seria el alta, baja, modificacion y eliminacion de los usuarios.

El problema es que cuando genero el alta de un nuevo usuario, necesito asignarle el tipo de perfil que tendra. (administrador, operador, tecnico, etc). Estos perfiles previamente cargados en la tabla "perfiles" los quiero poder mostrar en el formulario, ya sea por un radiogroup, o checkbox, para seleccionarlos a la hora de hacer la alta del usuario.

Lo que hice fue por medio de un ciclo while, poder mostrar y cargar todos los registros de la tabla perfiles (esta tabla tiene 2 campos, codigo_perfil, nombre_perfil).
Pero no consigo extraer el valor del campo "codigo_perfil" que es el que necesito para poder cargar en la tabla "perfiles_usuarios" y hacer la relacion de ese usuario con ese perfil.

Espero que se haya entendido y me puedan ayudar.

Saludos y muchas gracias!!

iMia 25-02-2016 10:33:35

Y con un DBComboBox... sería lo suyo...

ecfisa 25-02-2016 11:14:25

Hola.

Como te sugiere iMia, los combos cumplen muy bién la tarea que buscas.
Código Delphi [-]
...
implementation

// cargar nombre y código de perfil
procedure LoadComboBox(DS: TDataSet; CB: TComboBox);
begin
  DS.DisableControls;
  try
    DS.First;
    CB.Clear;
    while not DS.Eof do
    begin
      CB.AddItem(DS.FieldByName('NOMBRE_PERFIL').AsString,
        TObject(DS.FieldByName('CODIGO_PERFIL').AsInteger));
      DS.Next;
    end;
    DS.First;
  finally
    DS.EnableControls;
  end;
end;

// devuelve el código de perfil actual
function GetProfileCode(CB: TComboBox): Integer;
begin
  Result := Integer(CB.Items.Objects[CB.ItemIndex]);
end;

 { Ejemplo de uso }
procedure TForm1.FormCreate(Sender: TObject);
begin
  Tu_DataSet.Open;
  LoadComboBox(Tu_DataSet, ComboBox1);
end;

procedure TForm1.ComboBox1Change(Sender: TObject);
var
  cb: TComboBox;
  code: Integer;
begin
  cb   := TComboBox(Sender);
  code := GetProfileCode(CB);
  ShowMessage(Format('%s: %d',[cb.Items[cb.ItemIndex], code]));
end;

Saludos :)

kapcomx 25-02-2016 20:52:21

tambien puedes usar un dblookupcombobox, en sus propiedades asignas

ListSource: el nombre de tu data source (el cual debe esta ligado a un data set o una tabla)
ListField: el nombre del campo que quieres que se muestre
KeyField: el campo id.

a la hora de guardar tomas el valor del keyfield

algunavariable:= nombredemidblookup.keyvalue;

GUN10 25-02-2016 21:26:01

Muchas gracias por las respuestas!

Al final deje de complicarme tanto e hice que los datos sean mostrados en un dbcombobox y problema solucionado. Al menos realiza lo que esperaba.

Saludos !! ^\||/;)


La franja horaria es GMT +2. Ahora son las 17:39:56.

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