Ver Mensaje Individual
  #8 (permalink)  
Antiguo 23/05/2008, 14:11
quimfv
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 2 meses
Puntos: 574
Respuesta: insertar datos en tablas con relacion muchos a muchos en sql server

Con la contextualización queda bastante claro, no puedes ligar el hecho de dar de alta un donante al hecho de establecer la relacion donante/material.

El SP que has puesto si te fijas bien solo te sirve para, dar de alta un nuevo donante y su relacion con un solo material. I siempre que lo uses vas a generar un nuevo donante (nuevo id_donante -> nuevo donante).

Haz te las siguientes preguntas:

Como dare de alta el segundo material de un donante?
Como introducire las donaciones repetitivas de distintos materiales de un mismo donante?

No es un problema de que tipo id elijas para los donantes, el problema es que quieres hacerlo todo a la vez y no se puede.

Primero debes elegir el donante de entre los que ya tengas (la tabla donantes ahora esta vacia pero supongo que esperas que esto cambie), si es nuevo dar lo de alta. Una vez tienes su id (nuevo o viejo), sea un incremental o un numero de documento, podras introducir tantas relaciones donante/material que quieras con simples INSERT INTO a la tabla1tabla2.

Otra opcion pero no se que potencia tiene el leguaje de los SP seria poder pasar al SP el id del donante si es viejo o un nulo si es nuevo, y un array de materiales asociados al donante. Si esto es posible el SP deberá contener un condicional que si recibe un id de donante (viejo) simplemente lea el array y haga los inserts pertinentes en la tabla DonantesTiposMateriales uno para cada elelmento del array. Y si ha recibido un nulo primero haga el insert en la tabla de Donantes obtenga el id del nuevo donante y con este y el array haga los insert a DonantesTiposMateriales.

Si el donante es viejo el SP tambien podria mirar si los datos1,2,3 y 4 han cambiado y hacer el update pertinente...

pero creo que estaras intentanto resolver demasiadas cosas a la vez. Recuerda el viejo principio, claramente aplicable a la programación "divide y venceras".

Quim