Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 05-08-2004
Carlex Carlex is offline
Miembro
 
Registrado: feb 2004
Ubicación: Bolivia
Posts: 88
Poder: 21
Carlex Va por buen camino
Unhappy Master Detail

Buenas, estoy usando un DBGRID para mostrar los datos directamente de la tabla pero esta al estar relacionada, muestra los codigos solamente, ma indicaron que usando master detail esos codigos ya no apareceran y mostraran el campo, es decir en vez de "01" que diga "Zapatos" dentro del dbgrid, coloque la propiedad mastersource a todas las tablas pero nada! sigue igual, que estoy haciendo mal?
Responder Con Cita
  #2  
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
  #3  
Antiguo 05-08-2004
Carlex Carlex is offline
Miembro
 
Registrado: feb 2004
Ubicación: Bolivia
Posts: 88
Poder: 21
Carlex Va por buen camino
Thumbs up

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



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 15:34:24.


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
Copyright 1996-2007 Club Delphi