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)
-   -   mostrar datos con TDBCombobox (https://www.clubdelphi.com/foros/showthread.php?t=60693)

Bauhaus1975 10-10-2008 11:52:25

mostrar datos con TDBCombobox
 
Hola, disculpar si la pregunta es muy trivial:
Si tengo un TDBCombobox en un formulario conectado a un data source. ¿Cómo puedo mostrar en la lista otros datos que no son lo que lee de la base de datos? por ejemplo si esta asociado a un campo 'estado' cuyos valores son 0 -> Inactivo, 1 -> Activo. ¿Cómo puedo mostrar en la lista Activo e Inactivo en vez de 0 y 1?
Gracias y un saludo.

Lepe 10-10-2008 12:28:18

Un tdbLookUpCombobox, te rellena la lista automáticamente (busca en el foro).
En un TDBCombobox, tienes que rellenarla tú a mano, es decir, crear una consulta donde recuperes los valores "activo", "inactivo", etc y los usas combobox.lines.add("activo");.

Saludos

Caro 10-10-2008 16:50:34

Cita:

Empezado por Bauhaus1975 (Mensaje 319327)
¿Cómo puedo mostrar en la lista otros datos que no son lo que lee de la base de datos? por ejemplo si esta asociado a un campo 'estado' cuyos valores son 0 -> Inactivo, 1 -> Activo. ¿Cómo puedo mostrar en la lista Activo e Inactivo en vez de 0 y 1?

Hola Bauhaus1975, utiliza un DBLookupComboBox y para que te muestre otro valor en vez del que esta en tu BD, puedes utilizar el evento OnGetText del campo.

Código Delphi [-]
procedure TForm1.Table1EstadoGetText(Sender: TField; var Text: String;
  DisplayText: Boolean);
begin
 Case Sender.AsInteger of
  0 : Text := 'Inactivo';
  1 : Text := 'Activo';
 end;
end;

Saluditos

Bauhaus1975 14-10-2008 10:23:58

Hola, gracias por vuestra ayuda. Creo que no me he explicado bien:
Quiero mostrar el valor del campo 'Estado'. pero para un registro en concreto, y no mostrar todos los datos de ese campo almacenados. Lo que ocurre que los valores del campo pueden ser (0,1,2) pero yo quiero mostrar valores de texto 'Activo','Inactivo','Caducado'.

roman 14-10-2008 16:40:23

Hola Bauhaus,

Lo que pasa es que normalmente, en estos casos, se tiene una tabla en la base de datos con los valores descriptivos del campo. Es decir, tendrías la tabla estado:

Código:

+----+-----------+
| id | estado    |
+----+-----------+
| 1  | Activo    |
+----+-----------+
| 2  | Inactivo  |
+----+-----------+
| 3  | Caducado  |
+----+-----------+

con el catálogo de los distintos estados.

Entonces, conectas tu DBLookupComboBox a la tabla que quieres editar, mediante las prropiedades usuales de DataSource y DataField; pero también la conectas al catálogo anterior mediante sus propiedades ListSource, KeyField (id) y ListField (estado). De esta manera, el control automáticamente mostrará el esatdo correspondiente all valor numérico del registro activo.

// Saludos


La franja horaria es GMT +2. Ahora son las 03:50:32.

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