Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Impresión
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 05-08-2004
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
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
Responder Con Cita
  #2  
Antiguo 05-08-2004
Carlex Carlex is offline
Miembro
 
Registrado: feb 2004
Ubicación: Bolivia
Posts: 88
Poder: 23
Carlex Va por buen camino
Thumbs up

GRACIAS, simplemente genial tu ayuda, funciona a la perfeccion, gracias
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 05:59:23.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi