PDA

Ver la Versión Completa : Conocer Registro de un Combobox


Bant
25-05-2016, 16:12:34
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

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:

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
como podria conocer el registro que se ha seleccionado en el ComboBox para cargarlo en un edit


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;

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:


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!!