Access - fundir dos tablas: ¿se puede?

 
Vista:

fundir dos tablas: ¿se puede?

Publicado por Miguel (2 intervenciones) el 26/01/2006 11:22:41
Tengo varias tablas diferentes pero que tienen varios campos con el mismo nombre, digamos que "id", "título", "número" y "fecha", aunque "título" tiene una longitud de 50 caracteres en una tabla y "200" en otras". El resto de campos de las diferentes tablas es diferente de unas a otras.

Bien, lo que quiero ver es si fuera posible crear una consulta en la que pudiera ver un listado de todos los títulos, números y fechas de las cuatro tablas y poder luego desde un formulario hacer búsquedas en las cuatro como si se trataran de una sola. No se trata de crear una tabla con los datos de todas, sino sólo una consulta que me permita buscar datos en las cuatro a la vez desde un solo formulario.

Gracias por leer el mensaje
un saludo
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:fundir dos tablas: ¿se puede?

Publicado por 2PL (9 intervenciones) el 26/01/2006 15:29:20
Te creas una consulta de cada tabla con los campos que sean comunes y luego te creas una consulta de union de esas consultas.
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

¿una consulta de unión?

Publicado por Miguel (1 intervención) el 28/01/2006 01:42:52
Parece que sea muy fácil, pero por más vueltas que he dado no he logrado nada. Encontré la opción de consulta "Específica SQL --> Unión", pero al pinchar ahí me sale una hoja para escribir código, lo que no parece que sea de gran ayuda. Al final encontré la que parece ser la expresión correcta: INNER JOIN, pero por más ejemplos que he mirado no llego a comprender bien cómo funciona, aunque sospecho que en realidad lo que ocurre es que no sirve para lo que yo quiero. Me explicaré mejor poniendo un ejemplo:

Tengo una tabla llamada SUSTANTIVOS con un campo lladamo "palabra" y otro llamado "género"
Tengo otra tabla llamada ADJETIVOS con un campo llamado "palabra" y otro llamado "género"

Lo que quiero es conseguir (si se puede) una consulta que me permita mostrar en un formulario un campo llamado "palabra" en donde vengan todas las "palabra" de la tabla sustantivos y todas las de la tabla adjetivos. Y otro campo llamado "género" en donde vengan todos los datos del campo "género" de la tabla sustantivos más los de la tabla adjetivos.

De lo contrario tengo que importar todos los datos de la tabla ADJETIVOS e irlos copiando en la tabla SUSTANTIVOS. Así es como lo hacía antes pero el módulo que siempre me ha funcionado a las mil maravillas, ahora que me he actualizado al Access 2003 me da error, y por más días que me he pasado intentando solucionar el problema, no encuentro modo, por eso he pensado que a lo mejor se podía hacer lo mismo con una consulta que combine los datos de ambas tablas como si fueran una sola.
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

Gracias

Publicado por Miguel (1 intervención) el 28/01/2006 02:23:37
Vale, ya lo conseguí. No era INNER JOIN como sospechaba, sino UNION:

SELECT campo1, campo2 FROM Table1
UNION
SELECT campo1, campo2 FROM Table2

Así de fácil. Lo malo es que la consulta resultante no parece ser editable así que después de todo no me sirve de nada (aunque en el futuro seguro que le encontraré aplicación para otras cosas). Me temo que la única opción será seguir echándole horas intentando lograr un módulo que me copie todos los campos de la tabla1 en la tabla2 (pues tienen la misma estructura). Lo malo es que por más vueltas que doy no logro descubrir por qué mi módulo (que con Access XP funcionaba) da error. En fin, creo que de este golpe, en cuanto logre resolver este problema me retiro, antes de que mi salud mental se resienta aún más.
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:Gracias

Publicado por Miguel (1 intervención) el 28/01/2006 12:56:38
Por fin encontré el modo. Por si alguno está en mi misma situación os cuento a continuación cómo lo he logrado.

Unir dos tablas en una consulta, como dije antes, da como resultado una consulta no editable, así que si lo que se pretende es fundir dos tablas y que sea editable, no hay más remedio que insertar los registros de una tabla en la otra (o en una tercera) y así lograr una tabla que contenga todos los registros de una y los de otra (o al menos los campos que nos interesan). Es como sigue:

INSERTAR CAMPOS DE UNA TABLA EN OTRA TABLA

Se crea una consulta y en su SQL se escribe esto:
[para entrar en el SQL crear una consulta en modo diseño y elegir la opción del menú VER--> VISTA SQL]

INSERT INTO EXPRESIONES ( item, significado )
SELECT item, significado
FROM FRASES;

Esto inserta los campos "item" y "significado" de la tabla FRASES en los de la tabla EXPRESIONES
Los campos no tienen por qué llamarse igual, pero tienen que ser compatibles.
Luego, para activar dicha consulta ejecutable, se hace así:


Application.SetOption "Confirm Record Changes", False
DoCmd.OpenQuery "nombre de la consulta", acNormal, acEdit
Application.SetOption "Confirm Record Changes", False

Hay que añadir esas líneas de APPLICATION... para evitar que salgan mensajes de confirmación de los cambios, o mensajes avisándote de que ciertos registros no pudieron insertarse (por ejemplo porque están duplicados y el campo está creado como "sí, sin duplicados")

Espero que le sirva a alguien
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