** NORMAS DEL FORO **
Inicio del foro Inicio del foro > Access y VBA > Access y VBA
  Mensajes nuevos Mensajes nuevos RSS - Consulta resumen
  Preguntas frecuentes Preguntas frecuentes  Buscar en el foro   Eventos   Registro Registro  Iniciar sesion Iniciar sesion

Tema cerradoConsulta resumen

 Responder Responder
Autor
Mensaje
jorgepenalver Ver desplegable
Nuevo
Nuevo


Unido: 16/Junio/2018
Localización: Madrid
Estado: Sin conexión
Puntos: 33
Enlace directo a este mensaje Tema: Consulta resumen
    Enviado: 01/Junio/2019 a las 14:06
Hola compañeros

Trabajo en un colegio y me han mandado los informáticos un fichero con el que quiero trabajar.
Os incluyo una imagen de como es la estructura para que entendáis lo que quiero hacer.


Esta tabla, en lugar de contener un solo ID por alumno con diferentes campos, ha generado un registro por cada opción que el alumno ha seleccionado. 

Es como si en una base de datos de películas tuviéramos 3 registros por cada película: 
  1. Los tres registros tendrían un campo llamado 'Bloque' que contendría como contenidos posible "Título, Director, Fecha" y además un campo 'Opción'
  2. Ese campo 'Opción' tendría como contenido "Steven Spielperg" si en ese registro 'Bloque' estuviera rellenado como "Director".
  3. En el primer registro aparecía el Título, en el siguiente el Director y en el siguiente la Fecha.
  4. Los tres compartirían el mismo ID.
Así es como me han llegado los registros en esta tabla de alumnos, como podéis ver en la imagen. Lo que quiero es

  1. Agrupar todos los registros que tengan el mismo "idalumno"
  2. En la nueva tabla añadir como CAMPOS los seis tipos de contenidos que contiene el campo "bloque" en la tabla original, asignándoles el contendio del registro "opcion"
Me estoy volviendo majareta con las consultas. Muchas gracias a todos




Editado por jorgepenalver - 01/Junio/2019 a las 14:15
Arriba
xavi Ver desplegable
Administrador
Administrador
Avatar
Terrassa-BCN

Unido: 10/Mayo/2005
Localización: Catalunya ||||
Estado: Sin conexión
Puntos: 14738
Enlace directo a este mensaje Enviado: 02/Junio/2019 a las 09:40
Hola,

De entrada el diseño de la información que te han mandado me parece bastante correcto. Por lo que supongo que se trata de una extracción puntual de datos. Hoy tienes 6 "bloques" que quieres convertir en 6 campos. Si mañana tienes un numero distinto de bloques la cosa cambia.

Lo que estás pidiendo no tengo yo muy claro que se pueda hacer mediante consultas. Yo lo plantearía mediante VBA:
- Requisito previo: crear la tabla destino: idAlumno + los 6 campos "bloque". Para hacerlo fácil, deben tener el mismo nombre que los posibles valores (aunque eso va en contra de mi forma de nombrar campos) 
- Abrir recordsets sobre la tabla origen y destino
- Recorrer el recordset origen
- En cada registro buscar el idalumno en el recordset destino. Si lo encontramos -->Edit; si no lo encontramos --> AddNew
- Asignar al campo adecuado el valor de "opción": rstDestino.Fields(rstOrigen!bloque) = rstDestino!Opcion
- Salvar y pasar al siguiente

Así es como yo lo enfocaría. Al final son pocas líneas de código

Un saludo



Xavi, un minyó de Terrassa

Mi web
Arriba
Chea1 Ver desplegable
Moderador
Moderador


Unido: 20/Noviembre/2005
Localización: España
Estado: Sin conexión
Puntos: 4143
Enlace directo a este mensaje Enviado: 02/Junio/2019 a las 19:14
A mí la tabla de la imagen me parece la que soporta una relación de varios a varios entre Alumnos y Opciones, que se corresponden con los dos IDs que hay en la tabla. Opciones se relaciona además con otras dos tablas, Bloques y Clases, o, mejor dicho, con Clases que se relaciona a su vez con Bloques.

Lo mínimo sería crear las tablas Alumnos y Opciones con sendas consultas de creación de tablas a partir de SELECT DISTINCT IdAlumno, Alumno FROM Mitabla y SELECT DISTINCT ID, Opción, Clase, Bloque  FROM Mitabla.

Si luego consigues separar las tablas Bloques y Clases y sustituir en la actual la descripción por sus respectivos ID, que tendrías que crear, quedaría mucho más fino.


Saludos
José Bengoechea Ibaceta
Mi página

Mi otra página
Arriba
jorgepenalver Ver desplegable
Nuevo
Nuevo


Unido: 16/Junio/2018
Localización: Madrid
Estado: Sin conexión
Puntos: 33
Enlace directo a este mensaje Enviado: 23/Junio/2019 a las 16:27
Gracias por las respuestas. Lo veo mucho más claro.
Arriba
 Responder Responder
  Compartir tema   

Ir al foro Permisos de foro Ver desplegable