¿Cómo 'anidar' los datos de un registro para reducir el número de campos?

Mi padre y yo estamos trabajando en una especie de diccionario para registrar el habla de nuestra zona. Para ello hemos creado una base de datos intentando que luego nos ofrezca la mayor versatilidad posible, pero probablemente hay algo que no hemos planificado bien... Voy a intentar explicarme lo mejor que pueda.

La BDD tiene un registro por cada palabra tal y como se dice en mi pueblo, ese sería el índice. Tras eso aparece el "Tipo de palabra", la "Categoría", la "Definición", un "Ejemplo", cómo se dice esa palabra en Castellano "Palabra Castellano" etc.

El primer problema nos surgió cuando nos dimos cuenta de que cada palabra puede tener varios usos muy diferentes. Algunas sólo tendrán un significado pero otras pueden tener muchos. Ante ese problema decidimos añadir esos mismos campos al mismo registro. Es decir, cada registro tiene varios "Tipo de palabra", "Categoría", "Definición" etc. Añadiéndole a cada campo un número delante, p.ej.: "1_Categoría".

Así lo creímos solucionado.

Pero ahora llega el momento de presentar la información y se nos plantea otro problema (que si lo hubiéramos estructurado de otro modo posiblemente no tendríamos). Si por ejemplo vamos a imprimir, en realidad vamos a tener que imprimir un montón de campos (como veis en la imagen son 6 por definición, y algunas palabras tienen 7 acepciones diferentes...). Con lo cual no nos cabría en ninguna hoja.

Lo que necesitamos es que esos datos de ese registro (Palabra), en caso de que hayan más de una acepción se muestren anidados a ese registro y aparezcan debajo en vez de extendidos horizontalmente.

¿Alguien sabría hacer esto o darnos alguna indicación?

1 respuesta

Respuesta
2

De Excel no tengo ni idea, pero si fuera en Access sería sencillo, lo que haría sería crear una nueva tabla con los campos Palabra, número etc y un formulario y en el evento al hacer clic de un botón poner

docmd.setwarnings false

docmd.gotorecord,,acfirst

dim i as integer( o long si son mas de 32000 registros)

for i=1 to form.recordset,recordcount

if not isnull([tipo de palabra2]) then

docmd.runsql"insert into nuevatabla (palabra,numero, tipopalabra, definición,....) values('" & me.palabra1 & "',  1,  '" & me.tipopalabra1 & "', '" & me definición1 & "',....)"

docmd.runsql"insert into nueva tabla (palabra,numero,tipopalabra, definicion,...) values('" & palabra & "', 2, '" &me.tipopalabra2 & "', '" & me.definición2 & "',...)"

else

docmd.runsql"insert into nuevatabla (palabra,numero, tipopalabra, definición,....) values('" & me.palabra1 & "',  1,  '" & me.tipopalabra1 & "', '" & me definición1 & "',....)"

End if

docmd.gotorecord,,acnext

next

Me explico. Iría al primer registro y comprobaría si hay algo escrito en el cuadro de texto Tipopalabra2. Si lo hay, te insertaría en la nueva tabla los valores Palabra, 1, tipopalabra1, definicion1...

Luego te insertaría en el siguiente registro los valores, palabra, 2, tipopalabra2, etc.

Si por el contrario no hay nada escrito en tipopalabra2 sólo te insertaría Palabra, 1, tipopalabra1, definicion1,...

Se va al siguiente registro y hace lo mismo y así hasta que se acaben los registros del formulario.

Lo raro es que hayáis utilizado una hoja de calculo como Excel, para hacer algo típico de un gestor de bases de datos como Access.

Puedes probar a crear una base en Access e importar de Excel, lo que tenéis hecho, y después hacer lo que te he indicado.

Fallo mío que no lo he aclarado! HEMOS UTILIZADO ACCESS. Lo que pasa es que para coger manualmente los datos para subir aquí las imágenes, lo pasamos a Excel que nos permite 'moverlo' todo copiando y pegando. Es por eso, perdón.

Voy a probar lo que me comentas.

Gracias

Probablemente es abusar de tu amabilidad pero he intentado hacer lo que me dices y me faltan las nociones necesarias para entender cómo puedo hacerlo... ¿Te importaría ojear la BDD para ponérmelo un poco más fácil o bien (si realmente es sencillo y supone poco trabajo) hacerlo?

https://drive.google.com/open?id=0B_FWwkCwisAvYl9yLXdfX195QVU 

Te lo agradezco mucho. Si pudiera hacerlo yo no te lo pediría.

Ya te lo tengo preparado, pero como las "nubes" en esta zona sólo las queremos para la lluvia, y no cae una gota, si quieres, mándame un mensaje(solo el mensaje) a [email protected] y te la mando.

Si lo haces, en el asunto del mensaje pon tu alias Dani Torres, ya que si no sé quien me escribe ni los abro.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas