Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   Actualizar un DBLookupComboBox (https://www.clubdelphi.com/foros/showthread.php?t=9959)

pkbza 06-05-2004 19:09:34

Actualizar un DBLookupComboBox
 
Hola a todos, tengo un pequeño problema(soy nuevo en Delphi): tengo un DBLookupComboBox enlazado a una Tabla que es de una BD MySQL. Cuando modifico dicha tabla los cambios no se refejan en el DBLookupComboBox. ¿Como lo puedo hacer?, de antemano gracias.

:confused: pkbza

delphi.com.ar 06-05-2004 19:25:40

Tienes que refrescar el dataset que carga el combo, por ejemplo:
Código Delphi [-]
Query1.Refresh;

Saludos!

pkbza 10-05-2004 15:25:33

Gracias
 
Gracias me ha funcionado, saludos, suerte y q sane Diego.

Phacko 24-07-2017 06:13:26

tengo un problema parecido...
 
Que tal???

Disculpen si no es la forma de preguntar, pero no he querido hacer otro hilo para una pregunta muy similar.
Resulta que tengo el control DBLookUpComboBox enlazado a una tabla, selecciono una línea en el DBLookUpComboBox y los demás controles automáticamente accesan al mismo registro, todo bien, pero el problema está en que si cambio manualmente de registro (con un botón por ejemplo) el DBLookUpComboBox no se actualiza automáticamente, enlacé el control con las propiedades ListSource, Listfield y Keyfiel.

Gracias. Ya me diran si es que debo habrir un nuevo hilo.

ecfisa 24-07-2017 21:08:10

Hola Phako.

Si no entendí mal tu consulta bastaría con que asignaras la clave primaria a la propiedad KeyValue del TDBLookupComboBox cuando cambias la fila, por ejemplo:
Código Delphi [-]
...
procedure TForm1.FormCreate(Sender: TObject);
begin
  DataSource1.OnDataChange := DataSource1DataChange; 
end;

procedure TForm1.DataSource1DataChange(Sender: TObject; Field: TField);
begin
  DBLookupComboBox1.KeyValue := Query1.FieldByName('PRIMARY_KEY').Value;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  Query1.Next  
end;
...
El evento OnDataChange lo podes configurar en tiempo de diseño; lo hice en tiempo de ejecución para clarificar el ejemplo.

Saludos :)

Phacko 25-07-2017 22:02:03

No era exactamente eso el problema
 
Gracias por tu respuesta.

El hecho es que no tengo ninguna consulta, únicamente el control enlazado, al seleccionar de la lista un elemento los demás controles se actualizan al registro que corresponde, pero si el cambio lo realizo con otro control todos los controles cambian normalmente a excepción del DBLookUpComboBox que se mantiene con la selección anterior. Parece que el control DBLookUpComboBox cambia el registro en el DataSource pero no al revés o es que es necesario hacer una consulta.

Gracias.

ecfisa 25-07-2017 22:53:31

Hola.

El componente TDataSource necesariamente debe estar conectado a un TDataSet o descendiente. En el ejemplo usé una consulta pero podría haber sido cualquier otro componente de datos.

Si deseas que el TDBLookupComboBox se actualize al desplazarte por las filas de una tabla, tendrás que ajustar la propiedad KeyValue cuando se produzca dicha acción como te indiqué en el mensaje anterior, por ejemplo.

No alcanzo a entender como has configurado las siguientes propiedades en el TDBLookupComboBox:
  • ListSource: TDataSource vinculado con la tabla poseedora de la columna a mostrar.
  • ListField : Columna cuyo valor será mostrado como lista en el control.
  • (opcionales)
  • DataSource: TDataSource vinculado al origen de datos lookup.
  • DataField : Nombre de la columna vinculante del DataSet especificado en la propiedad DataSource.
Sería interesante que nos explicaras como has configurado las anteriores para entender mejor la situación.

Saludos :)

Phacko 17-08-2017 04:10:59

Algo simple
 
Gracias Ecfisa, una disculpa por tardar tanto, tuve que tomar vacaciones forzadas. Explico. Únicamente enlace el DBLookUpComboBox con sus propiedades ListSource al DataSource, ListField al campo que quiero listar y KeyField a la clave primaria (única), si en la propiedad DataSource doy el DS que utlilizo me da error.
Así es como el control DBLookUp da la lista con los valores en el campo.

Espero que sea entendible. Gracias


La franja horaria es GMT +2. Ahora son las 18:29:20.

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