Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 28-11-2005
jfgaliano jfgaliano is offline
Miembro
 
Registrado: nov 2005
Posts: 15
Poder: 0
jfgaliano Va por buen camino
Relación m a n en un grid

Saludos, en la base de datos tengo una relacion M a N y la he anulado con una tabla intermedia que tiene las claves de las dos tablas. Hasta ahí lo normal. Agradecería saber cómo mostrar un grid en la aplicación para poder insertar datos en esa tabla, para crear las relaciones. muchas gracias
Responder Con Cita
  #2  
Antiguo 28-11-2005
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.042
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Mira la guía de estilo
Responder Con Cita
  #3  
Antiguo 28-11-2005
jfgaliano jfgaliano is offline
Miembro
 
Registrado: nov 2005
Posts: 15
Poder: 0
jfgaliano Va por buen camino
Perdon por lo del estilo. La base de datos es Interbase y trabajo con IBobject.Gracias
Responder Con Cita
  #4  
Antiguo 28-11-2005
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.042
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
¿Y cómo son esas relaciones, tablas, campos, etc.? Lo podemos suponer, pero mejor que lo expliques en detalle.

Gracias
Responder Con Cita
  #5  
Antiguo 28-11-2005
jfgaliano jfgaliano is offline
Miembro
 
Registrado: nov 2005
Posts: 15
Poder: 0
jfgaliano Va por buen camino
Muchas gracias. Pues tengo una tabla de persona y otra de titulación. Como una persona puede tener varias titulaciones,pues es creado otra tabla con las claves de ambas para deshacer la relación de MxN. Por tanto, al estar introduciendo los datos de la persona, me gustaría tener un grid u otra cosa en la que puede asignar a esa persona una o varias titulaciones, pero no sé muy bien como hacer esto. Un saludo
Responder Con Cita
  #6  
Antiguo 28-11-2005
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.042
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Creo entender que tienes algo así:
Código:
 PERSONAS
 CODIGO	NOMBRE
 ----------------------
 1		PEPE
 2		MANOLO
 
 
 TITULACION
 ----------------------
 CODIGO	TITULO
 1		MECANICO
 2		ELECTRICISTA
 1		PINTOR
 1		FONTANERO
 2		CRISTALERO
 1		ELECTRICISTA
¿y la otra tabla cómo sería y para qué?, esa parte no la he entendido.
Responder Con Cita
  #7  
Antiguo 28-11-2005
jfgaliano jfgaliano is offline
Miembro
 
Registrado: nov 2005
Posts: 15
Poder: 0
jfgaliano Va por buen camino
Ante todo,gracias por la paciencia. La otra tabla sería

tabla :PERSONA_TITULACION

CODIGO_PERSONA CODIGO_TITULACIÓN
----------------------------------------
1 1
1 2
2 1

Se hace para asingarle a una persona una o varias titulaciones. Se obtiene al normalizar la relación m,n
Responder Con Cita
  #8  
Antiguo 28-11-2005
Avatar de vtdeleon
vtdeleon vtdeleon is offline
Miembro
 
Registrado: abr 2004
Ubicación: RD & USA
Posts: 3.236
Poder: 24
vtdeleon Va por buen camino
Saludos
Antes que todo, decirte que puedes utilizar lasEtiquetas vB . La puedes usar, Son gratis

Volviendo a tu caso y haciendo un peque~ito arreglo al ejemplo de casimiro
Código:
 PERSONAS
 CODIGO	NOMBRE
 ----------------------
 1	PEPE
 2	MANOLO
 
 
 TITULACION
 ----------------------
 CODIGO	TITULO
 1	MECANICO
 2	ELECTRICISTA
 3	PINTOR
 4	FONTANERO
 5	CRISTALERO
 6	ELECTRICISTA

Y una 3ra
PERSONA_TITULACION

CODIGOPERSONA CODIGOTITULO
----------------------------------------
1 		1
1 		2
2		1
La consulta seria
Código SQL [-]
select personas.codigo, personas.nombre, titulos.nombre
from personatitulo
inner join personas on personas.codigo=personatitulo.codigopersona
inner join titulos on titulos.codigo=personatitulo.codigotitulo
__________________
Van Troi De León
(Not) Guía, Code vB:=Delphi-SQL, ¿Cómo?
Viajar en el tiempo no es teóricamente posible, pues si lo fuera, ya estarían aqui contándonos al respecto!
Responder Con Cita
  #9  
Antiguo 29-11-2005
jfgaliano jfgaliano is offline
Miembro
 
Registrado: nov 2005
Posts: 15
Poder: 0
jfgaliano Va por buen camino
Gracias.Esto era lo que quería, pero para insertar estos datos en un grid o algo por el estilo, de manera que cuando esté metiendo los datos de una persona, pues para este campo, me de la opción a seleccionar uno o varios. La duda es de como se hace eso en Delphi. Gracias
Responder Con Cita
  #10  
Antiguo 29-11-2005
Avatar de Ivanzinho
[Ivanzinho] Ivanzinho is offline
Miembro Premium
 
Registrado: ene 2005
Ubicación: Galicia
Posts: 595
Poder: 20
Ivanzinho Va por buen camino
Mira el tema 15 del libro la cara oculta de Delphi4 que puedes descargar aquí
__________________
Si no lees esto no vivirás tranquilo
Non lle poñades chatas â obra namentras non se remata. O que pense que vai mal que traballe n’ela; hai sitio para todos. (Castelao)
Responder Con Cita
  #11  
Antiguo 29-11-2005
ronalg ronalg is offline
Miembro
 
Registrado: may 2003
Ubicación: Sucre - Bolivia
Posts: 68
Poder: 21
ronalg Va por buen camino
La relaciones MxN o muchos a muchos no son muy problematicas

Todo el tiempo aparecen este tipo de relaciones entre tablas, a mi en lo personal me agradan porque tienen al menos dos posibilidades básicas de trabajar, dejame ver:
Tienes dos tablas y una tercera de enlace con refencia o foreign key a las otras, entonces:

tb_personas maestra - tb_personal_titulos Detalle

Código SQL [-]
create table tb_pesonas(
cod integer not null primary key,
nombres varchar(50),
ap_paterno varchar(30),
     .
     .
     .
)

create table tb_titulos(
cod integer not null primary key,
titulo varchar(30) not null
     .
     .
     .
)

create table tb_personas_titulos(
cod integer not null primary key,
ref_persona integer not null,
ref_titulo integer not null,
foreign key (ref_persona) references tb_personas(cod)
on delete no action on update cascade,
foreign key (ref_titulo) references tb_titulos(cod)
on delete no action on update cascade
     .
     .
     .
)

haría algo asi, un formulario dos grillas(una personas y otra titulos asignados), eso implica dos Tdataset (Ttable por ahora) y dos Tdata Source y un tQuery haciendo:

Código SQL [-]
select cod, titulo
from tb_titulos

1er dataset conectado a la tb_personas
2do dataset conectado a la tb_personas_titulos
2do dataset creo un campo lookup que apunte ref_titulo a titulo en el Tquery
en el primer tdataset en master source colocas datasouce1 y en master field el campo ref_persona.
y eso es todo
__________________
Saludos desde Sucre - Bolivia
"Si te lo puedes imaginar lo
puedes resolver" Pyriel
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 09:58:14.


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