Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Conocer Registro de un Combobox (https://www.clubdelphi.com/foros/showthread.php?t=90371)

Bant 25-05-2016 16:12:34

Conocer Registro de un Combobox
 
Saludos colegas del foro. Hoy he vuelto a ustedes con otra inquietud.
Estoy cargando los registros de una tabla de base datos en SQL server management studio 2014 a un ComboBox por medio de un adoquery de una factura, estoy pensando como podria conocer el registro que se ha seleccionado en el ComboBox para cargarlo en un edit, es decir, el combobox carga los registros ya colocados en la tabla bajo el campo de [Codigo], entonces una vez seleccionado quiero que me cargue el valor de ese registro pero en el campo [Descripcion] para hacerlo con el campo [Precio] más adelante. El codigo siguiente esta puesto en el evento OnClick del ComboBox y se esta haciendo esa consulta con un adoquery distinto al que use para cargar los datos en el ComboBox

Código Delphi [-]
begin
with dm2.ADOConsulta do
begin
Close;
SQL.Clear;
SQL.Text := 'select Descripcion from Inventario where Codigo =' + ComboBox1.Text;
Open;
end;
end;

ecfisa 25-05-2016 16:57:52

Hola.

Según creo haber entendido ya tenes cargado los campos "CODIGO" en tu ComboBox y deseas que cuando se realice una selección en él, aparezca el correspondiente campo "DESCRIPCION" en un Edit.

Si es así, podes hacer:
Código Delphi [-]
procedure TForm1.ComboBox1Click(Sender: TObject);
begin
  if ComboBox1.ItemIndex <> -1 then
  begin
    ADOConsulta.Close;
    ADOConsulta.SQL.Text := 'SELECT DESCRIPCION FROM INVENTARIO WHERE CODIGO = :CODIGO';
    ADOConsulta.Parameters.ParamByName('CODIGO').Value := ComboBox1.Items[ComboBox1.ItemIndex];
    ADOConsulta.Open;

    if ADOConsulta.FieldByName('DESCRIPCION').IsNull then
      Edit1.Text := ''
    else
      Edit1.Text := ADOConsulta.FieldByName('DESCRIPCION').Value;
  end;
end;

Saludos :)

Neftali [Germán.Estévez] 25-05-2016 17:42:56

Cita:

Empezado por Bant (Mensaje 505573)
como podria conocer el registro que se ha seleccionado en el ComboBox para cargarlo en un edit

Código Delphi [-]
  Close;
  SQL.Clear;
  SQL.Text := 'select Descripcion from Inventario where Codigo =' + ComboBox1.Text;
  Open;
  // Lo ha encontrado?
  if (not dm2.ADOConsulta.Eof) then begin
     editDescripcion.Text :=  dm2.ADOConsulta.FieldByName('Descripcion').AsString;
     editPrecio.Text :=  dm2.ADOConsulta.FieldByName('Precio').AsString;
  end;
Cita:

Empezado por Bant (Mensaje 505573)
pero en el campo [Descripcion] para hacerlo con el campo [Precio] más adelante.

Aprovecha la misma consulta para cargar todo el registro, no lances una consulta para cada valor.
Para ello cambia la consulta por:

Código Delphi [-]
  SQL.Text := 'select * from Inventario where Codigo =' + ComboBox1.Text;

roman 25-05-2016 17:49:59

Otra opción es usar los controles adecuados, tales como TDBComboBox, TDBEdit, etc. :rolleyes:

LineComment Saludos

Bant 26-05-2016 02:26:38

Gracias a todos por su rápida respuesta ;);) como siempre no decepcionan el código de ecfisa me sirvió a la primera! :D:D Usare tu consejo Neftali para hacer con cualquier otro edit jajja estaba pensando hacer una consulta por cada edit y roman tomare tu consejo en cuenta para el próximo proyecto que tenga, ya que tenes razón debería utilizar los componentes adecuados para cada trabajo!!. Muchas gracias chicos!!


La franja horaria es GMT +2. Ahora son las 10:25:18.

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