![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
#2
|
||||
|
||||
|
En este caso no es una relación maestro-detalle lo que requieres sino un campo de tipo lookup.
Vamos a poner un ejemplo. Suponte que tienes estas tablas: pedidos = (id, producto_id, cliente_id) productos = (id, nombre, precio) clientes = (id, nombre, domicilio) En la tabla pedidos el campo producto_id es el código del producto, por ejemplo "01" el cual corresponde al registro con id="01" en la tabla productos: (01, zapatos, 30) Como has visto, al asociar el DBGrid a la tabla pedidos se lista el código del producto y no el nombre del producto. Para que aparezca el nombre del producto debes agregar un campo de tipo Lookup: en el editor de campos del Table que uses para los pedidos (doble click sobre la componente) añades, además de los campos requeridos, un nuevo campo seleccionando el tipo Lookup y asignando las siguientes propiedades: Name - el nombre que desees Type - el tipo de datos del nombre del producto (supongo que String) Size - la longitud del campo (deberá corresponder a la longitud que tengas definida en el campo nombre de la tabla productos) Field Type - Lookup DataSet - la componente Table que uses para productos Result Field - el campo "nombre" (de la tabla productos) Key Field - el campo producto_id (de la tabla pedidos) Lookup Field - el campo id (de la tabla productos) Con esto acabas de establecer la relación entre ambas tablas y el DBGrid te presentará el nuevo campo mostrando el nombre del producto. En el ejemplo te puse la tabla de clientes para mostrarte la diferencia con una relación maestro-detalle. Suponte que cada vez que seleccionas un cliente en un DBGrid deseas mostrar en otro DBGrid todos los pedidos de ese cliente. Aquí las tablas clientes y pedidos se relacionan mediante los campos clientes.id <--> pedidos.cliente_id Es decir, muy parecido a lo anterior. Pero ahora estableces a clientes como maestro de pedidos (propiedad MasterSource de la tabla pedidos usando los campos anteriores como MasterFields). De hecho fíjate como la misma relación clientes.id <--> pedidos.cliente_id también puede usarse como Lookup para mostrar en el DBGrid de pedidos el nombre del cliente. Pero en tal caso ya no sería una relación maestro-detalle. De cualquier forma yo te recomiendo que dediques un poco de tiempo a estudiar estos conceptos que son básicos para el desarrollo de tus sistemas. // Saludos |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
|