Ver Mensaje Individual
  #3  
Antiguo 10-02-2016
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Reputación: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola ciudad54.

Usando dos TComboBox podrías hacer:
Código Delphi [-]
// ComboBox1 = especialidad | ComboBox2 = medico

procedure TForm1.FormCreate(Sender: TObject);
begin
  qyEspec.Close;
  qyEspec.SQL.Text := 'SELECT ID, ESPEC FROM ESPECIALIDAD';
  qyEspec.Open;
  while not qyEspec.Eof do
  begin
    ComboBox1.AddItem(qyEspec.FieldByName('ESPEC').AsString,
      TObject(qyEspec.FieldByName('ID').AsInteger));
    qyEspec.Next;
  end;
end;

procedure TForm1.ComboBox1Change(Sender: TObject);
var
  cb: TComboBox;
begin
  cb := TComboBox(Sender);
  if cb.ItemIndex <> -1 then
  begin
    qyMedic.Close;
    qyMedic.SQL.Text := 'SELECT NOMBRE FROM MEDICO WHERE ESPEC_ID = :ID';
    qyMedic.ParamByName('ID').AsInteger := Integer(cb.Items.Objects[cb.ItemIndex]);
    qyMedic.Open;
    ComboBox2.Clear;
    while not qyMedic.Eof do
    begin
      ComboBox2.Items.Add(qyMedic.FieldByName('NOMBRE').AsString);
      qyMedic.Next;
    end;
  end;
end;

Pero resulta mucho mas simple usar dos TDBLoocupComboBox:
Código Delphi [-]
procedure TForm1.FormCreate(Sender: TObject);
begin
  qyEspec.Close;
  qyEspec.SQL.Text := 'SELECT ID, ESPEC FROM ESPECIALIDAD';
  qyEspec.Open;

  qyMedic.DataSource := dsEspec;   // TDataSource asociado al dataset especialidad

  DBLookupComboBox1.KeyField   := 'ID';
  DBLookupComboBox1.ListField  := 'ESPEC';
  DBLookupComboBox1.ListSource := dsEspec;

  DBLookupComboBox2.KeyField   := 'ID';
  DBLookupComboBox2.ListField  := 'NOMBRE';
  DBLookupComboBox2.ListSource := dsMedic;  // TDataSource asociado al dataset medico
end;

procedure TForm1.DBLookupComboBox1CloseUp(Sender: TObject);
begin
  qyMedic.Close;
  qyMedic.SQL.Text := 'SELECT ID, NOMBRE FROM MEDICO WHERE ESPEC_ID = :ID';
  qyMedic.Open;
end;

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 10-02-2016 a las 07:55:57.
Responder Con Cita