Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   Relaciones entre tablas mediante combobox (https://www.clubdelphi.com/foros/showthread.php?t=22500)

efs 17-06-2005 05:06:30

Relaciones entre tablas mediante combobox
 
Que tal, agradezco desde ya su ayuda con este tema ya que no tengo mucha idea de como manejarlo.

Mi problema no es para un caso en particular sino que estoy iniciando un programa y no se como manejar las relacionas entre las tablas.
Estoy trabajando con delphi 7 y firebird, y el caso es que tengo varias tablas, todas con un campo nombretabla_id autoincremental mediante generadores (primary key), y para las tablas relacionadas a esta una referencia al campo id de la tabla a la cual estan relacionadas (nombretablarelacionada_id).
El problema general es que yo quiero mostrar en una pantalla A (que tiene los campos de su correspondiente tabla para edicion mediante IBDataset) un combobox con los datos de un determinado campo de una tabla relacionada a esta, que me muestre todos los datos de ese campo de esa tabla y que yo al seleccionar uno y poner aceptar me guarde la relacion (es decir el id de la tabla relacionada en la que yo estoy usando) y bueno, al editarlo y cambiarlo me lo cambie.

No tengo mucha idea de como manejarlo asi que cualquier tipo de ayuda se las agradezco y logicamente si piensan que lo mejor seria hacerlo de otra forma tambien les agradezco tambien la informacion.
Un saludo.

roman 17-06-2005 07:05:42

Supongamos que tienes una tabla de personas y una de paises

personas = (id, nombre, pais_id)
paises = (id, nombre)

Muestras la tabla personas en un DBGrid y quieres mostrar en un combo la lista de (nombres de) países de manera que al seleccionar uno, se actualice el campo pais_id.

¿Es así?

A veces es mejor no ser tan abstracto y poner un ejemplo concreto para fijar ideas.

Como no trabajo con FireBird, desconozco cuál pueda ser la mejor opción. Pero puedes revisar este mensaje en el que explico cómo agregar un campo "lookup" de manera que el combo te aparezca dentro del dbgrid.

Otra forma sería usar un DBLookupComboBox ajustando sus propiedades:

DataSource <-- IBDataSetPersonas
DataField <-- pais_id
ListSource <-- IBDataSetPaises
ListField <-- nombre
KeyField <-- id

En este caso el combo estaría fuera del dbgrid.

// Saludos

efs 17-06-2005 15:03:58

Muchas gracias roman, disculpa por no especificar mas el problema pero entendiste perfecto, era justamente eso lo que necesitaba (el segundo caso, el combo fuera del dbrid).
Nuevamente muchas gracias y un saludo.


La franja horaria es GMT +2. Ahora son las 22:21:11.

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