Access - insertar tablas vinculadas

 
Vista:

insertar tablas vinculadas

Publicado por M.Angel (2 intervenciones) el 28/01/2006 23:23:08
tengo que insertar datos de varias tablas a otras. Lo hago con una instrucción SQL usando INSERT INTO y va estupendamente. Pero el problema surge con dos tablas que están vinculadas. Una tabla tiene preguntas y la otra respuestas, con lo que a una pregunta pueden corresponderle varias respuestas.

Lo he intentado de diferentes maneras y no lo consigo. He creado una consulta donde combino ambas tablas y aparecen cada respuesta con su pregunta. Pero en dicha tabla las preguntas se repiten, porque varias respuestas se refieren a la misma pregunta. Ambas tablas están enlazadas por el campo id (autonumérico en el caso de las preguntas y con la propiedad indexado "sí (sin duplicados)". Y ahí está la madre del cordero.

Si hago un INSERT INTO con la consulta entera, como varias respuestas tienen la misma pregunta lo interpreta como que se está repitiendo la misma pregunta, lo cual da error por que la pregunta tiene "(sin duplicados), así que sólo importa la primera respuesta de cada pregunta pero no las demás.

He intentado hacerlo manualmente, abriendo una tabla, leyendo un registro y copiándolo en la otra tabla. En tal caso inserto todas las preguntas en la nueva tabla y todo va bien, pero cuando intento insertar las respuestas no hay manera. Al añadir las preguntas a una tabla ya existente, su id cambia (se incrementa), con lo cual, al insertar las respuestas sólo me permite hacerlo con aquellas respuestas que tengan un id que ya existe en la nueva tabla, pues son campos vinculados y no pueden existir sin un vínculo con la tabla de preguntas. Ni que decir tiene que las pocas respuestas que terminan insertándose quedan fuera de lugar, pues su id ya no se corresponde con el id original de su pregunta correspondiente, con lo cual aparecen asociadas a preguntas con las que nada tienen que ver. He intentado remediar esto con mil y un trucos, pero ni modo.

Puede que suene muy lioso así explicado, pero no pierdo la esperanza de que alguien pueda ayudarme porque si no consigo esto, después de meses de trabajo el programa se me va al carajo.

Gracias por al menos haber leído toda esta parrafada
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:insertar tablas vinculadas

Publicado por jubedi (4 intervenciones) el 29/01/2006 19:42:19
por que no usas una consulta de datos anexados en vez de sql?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:insertar tablas vinculadas

Publicado por Miguel (2 intervenciones) el 01/02/2006 00:36:17
gracias. No sé cómo funciona lo de la consulta de datos anexados, sólo lo he mirado por encima pero será cuestión de mirarlo más despacio a ver si se pueden anexar ambas a un tiempo. El problema es que una tabla es de preguntas y otra de respuestas y al importar las preguntas, como se añaden a los registros que ya tiene la otra tabla, su id (autonumérico) cambia, y ese ide, que es el que las vincula con sus respuestas, ya queda diferente por lo que no encajan. Si con una consulta de datos anexados puede importar las dos y actualizar sus ids de manera que sigan vinculados, excelente.

Pero si no logro hacerlo, al menos ya lo he conseguido hacer por la cuenta de la vieja, creando en cada tabla un campo en donde copio el valor antiguo del id antes de importar. Al importar cambia el id, pero ese campo N me sigue diciendo cuál era su id. Luego he creado otra tabla de transición en la que hago una copia de la tabla de respuestas (como esta tabla no está vinculada no me da error al copiar las respuestas). Luego con un loop voy pregunta por pregunta mirando su antiguo id (N) y buscando en esa tabla de copia de respuestas todas las respuestas que tengan su mismo antiguo id. Cuando las localizo cambio el id de la respuesta por el nuevo id que tiene esa pregunta. Así hago con cada pregunta y cuando he terminado con todas, le tabla copia de respuestas tiene todos los ids de respuestas actualizados, con lo cual ya las puedo importar todas sin que me de error ni queden mal vinculadas. Supongo que es una chapuza pero me funciona perfectamente y como tampoco es una base enorme, lo hace en un segundo. De todas formas, si con la consulta de datos anexados se hace bien, para la próxima versión lo modificaré.

Gracias por tu respuestas
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar