PDA

Ver la Versión Completa : Algo más que "maestro/detalle": 3 tablas


Chandra_
21-12-2010, 19:24:30
Hola

Tengo una parte de un programa en el que se trabaja con un grupo de personas que pueden pertenecer o no a uno o varios equipos. Lo he resuelto con 3 tablas:

- En la tabla Equipos tengo el nombre del equipo y una referencia única o ID (una clave primaria, vamos).
- La segunda tabla, la del personal, contiene igualmente el nombre de la persona y una referencia única (otra clave primaria).
- En la tercera tabla se establece la relación Equipo/personas que lo componen. Es decir, en cada registro se guarda el ID de la persona y el ID del equipo (aparte de una clave primaria que aquí no viene al caso). Buscar los miembros de un equipo es fácil: con un SELECT se buscan todos los registros que tengan el mismo número de referencia de Equipo.

Hasta ahí todo bien. El problema es que me gustaría que al desplazarme por el grid que apunta a la tabla de nombres de equipo en otro grid se mostraran todos sus componentes.

Lo hago sin problemas con un Button, por ejemplo: en el evento OnClick le meto una llamada al query que hace el SELECT y listo. Lo malo es que Delphi no me deja meter esta llamada al query en ningún evento del grid de los equipos, porque se queja de que la tabla de personal está aún cerrada (he probado en casi todos los eventos imaginables del grid y en los del dataset... pero no quiere).

¿Alguna idea? ¿Lo hago de otra forma?

Había pensado en el típico ejemplo de "los clientes y los pedidos" en dos tablas, pero no es aplicable a este caso, porque aquí sería como si cada pedido pudiera estar hecho por más de un cliente; es decir, que no puedo meter en la tabla del cliente (en mi caso, del personal) referencias a un número indeterminado pedidos (en mi caso, a varios Equipos). Bueno... sí podría hacerlo con un array en un campo o algo así, supongo, pero no quiero complicar tanto la lógica del programa.

Gracias de antemano

Chandra_
21-12-2010, 20:07:03
Me respondo a mi mismo:

Perdón, He cometido un error imperdonable: había olvidado quitar la llamada al query en uno de los eventos del dataset y por eso no me funcionaba: lanzaba sin darme cuante el query antes de tiempo :o

Yo probaba y probaba en todos los eventos y, claro!, siempre me daba NECESARIAMENTE error. Pero qué burro que soy... :o

Claro... ahora sí que funciona: le pongo la llamada al query con el SELECT en el ebento OnCellClick y va como la seda (bueno... todo lo "como la seda" que puede ir un query cada dos por tres).

Ya me extrañaba a mi. Si es que hay que levantarse del sillón de vez en cuando para despejarse, que si no se le pone a uno el cerebro como una empanada :D

Gracias y perdón si alguien se ha leído el ladrillo