Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Refrescar un combobox llenado con registros (https://www.clubdelphi.com/foros/showthread.php?t=88609)

rufo 03-07-2015 02:48:28

Refrescar un combobox llenado con registros
 
Buenas noches amigos traigo una duda algo novata pero la verdad ya le he buscado y nada jejeje, bueno tengo un combobox que lo lleno con registros traídos de una consulta pero al momento de agregar un nuevo registro a la tabla y que este aparezca de nuevo en el combobox si aparece pero cuando desplegó el combobox aparecen los registros repetidos entonces es ahi el meollo del asunto como refrescar el combobox para que no me aparezcan repetidos los registros, espero que me ayuden y gracias.

AgustinOrtu 03-07-2015 03:15:10

Muestra tu codigo

No se como haces para llenar tu ComboBox. Agregas un registro, y luego agregas ese registro en particular a tu combo, o te los traes de la bd de nuevo? En el ultimo caso te tenes que asegurar de limpiar lo que ya tenias o ir fijandote si ya lo tenias y no agregarlo

ecfisa 03-07-2015 03:27:25

Hola rufo.

Podes hacerte un procedimiento para refrescar el combo cada vez que lo precises
Código Delphi [-]
procedure RefreshComboBox(CB: TComboBox; aDataSet: TDataSet; const aFieldName: string);
begin
  CB.Items.Clear;
  with  aDataSet do
  begin
    First;
    while not aDataSet.Eof do
    begin
      CB.Items.Add(FieldByName(aFieldName).AsString);
      Next;
    end;
  end;
  CB.ItemIndex := 0;
end;

Un ejemplo de uso:
Código Delphi [-]
procedure TtuForm.tuDataSetAfterPost(DataSet: TDataSet);
begin
  RefreshComboBox(ComboBox1, tuDataSet, 'NOMBRE_DE_LA_COLUMNA'); // (*)
end;
(*) Donde, 'NOMBRE_DE_LA_COLUMNA' deberás reemplazarlo por el nombre de columna que usaste para cargar el combo.

Saludos :)

rufo 03-07-2015 03:29:11

Código:

procedure Tprincipal2.ComboBox7Exit(Sender: TObject);
begin
 with dm1.Q_cfacturas do
  begin
      active:=false;
      sql.clear;
      sql.add('select id_cuenta, numerocta from Cfacturas');
      sql.Add('where cuenta = '+#39+combobox7.text+#39);
      active:=true;
      first;
      label114.Caption:=fieldbyname('numerocta').asstring;
      if recordcount<>0 then
        V_idcuenta:=fieldbyname('id_cuenta').asinteger
      else
      if Application.MessageBox('No se encontro la especialidad, Deseas Agregarlo?','Agregar',MB_OKCANCEL+MB_ICONQUESTION)=IDOK then
        with Agrecatalogo do
        begin
          Visible:=true;
        end;
          end;
  end;

El formulario Agrecatalogo es donde actualizo la tabla desde un dbgrid ahi no tengo problemas el problema es en el combo para que no me muestre datos repitidos, gracias por contestarme.

ecfisa 03-07-2015 04:50:29

Hola rufo.

Voy a repetir lo dicho por AgustinOrtu,
Cita:

No se como haces para llenar tu ComboBox.
así que te hago tres consultas:
  • ¿ Que componente es y como se llama el TDataSet (query, table, etc) desde donde cargas el ComboBox ?
  • ¿ Que nombre tiene la tabla a la que hace referencia el componente anterior ?
  • ¿ Como se llama el campo (columna) que cargas en el ComboBox y que luego se visualiza para ser seleccionado ?

Saludos :)

Casimiro Notevi 03-07-2015 09:34:14

Cita:

Empezado por rufo (Mensaje 493929)
...

Rufo, que no eres un novato en los foros :D


La franja horaria es GMT +2. Ahora son las 23:03:58.

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