La base interminable...(ACCESS)

Pero te la voy a plantear con un ejemplo.
Imagina una tabla en la cual introducimos una serie de registros, por ejemplo personas. Uno de los campos será el de NOMBRE (por ejemplo: Pepe, Juan, Manolo).
Imagina que esta tabla puede ir ampliándose a medida que vamos conociendo gente.
Ahora imagina que queremos crear una tabla, cuyos REGISTROS sean esos mismos nombres (es decir, Pepe, Juan, Manolo) y que los CAMPOS también sean esos nombres (Pepe, Juan, Manolo de nuevo)
¿Para qué todo esto?
Pues para tener una serie de "coincidencias". En EXCEL sería algo así:
Pepe Juan Manolo
Pepe ident. Nota1 Nota2
Juan Nota1 ident. Nota3
Manolo Nota2 Nota3 ident.
Esto vendría a comentar la relación que existe entre los personajes o, en caso de ser uno mismo, la identidad.
Ahora vienen las preguntas...
- Imagina que quiero hacer un formulario, en el que se vayan pasando uno a uno los personajes.
- Imagina que en uno de los cuadros de lista puedo ir pasando por los distintos personajes que también forman parte de mi base de datos
- Imagina que en un cuadro de texto aparte puedo ir viendo las diferentes notas que he ido anotando en mi tabla
¿Cómo hago esto?
Obviamente, no me lo he montado con Excel porque lo que me interesa es que las tablas sean "dinámicas", es decir, que a medida que se vayan creando personajes automáticamente se contemple la opción de las coincidencias...

2 respuestas

Respuesta
1
Te has explicado muy bien.
Es una cuestión interesante, pero de fácil solución.
Se puede hacer de muchas maneras, pero voy a plantearte una visión distinta a la que proponer, a la par que más sencilla de implementar.
Imaginemos que como tu dices, tienes una serie de personajes, en una tabla PERSONAJES, donde hay un campo NOMBRE.
Seria así:
PEPE
JUAN
Manolo
Etc...
Bien, como quieres saber que relación se guarda entre los distintos personajes, es más cómodo hacer otro tipo de relación, y no de incrementar el nº de campos, sino el nº de registros. Me explico, de la manera que tu lo planteas, cada vez que intervenga un nuevo personaje, tu crearías un campo en la tabla, por lo que si el nuevo personaje es conocido por una sola persona, pues el resto de los campos ocupan un espacio innecesario.
Yo lo planteo así, una tabla RELACIONES, con los campos PERSONAJE PRINCIPAL, PERSONAJE RELACIÓN, TEXTO RELACIÓN.
De esta forma quedaría así.
PP PR TR
Juan pepe es un amigo
Juan manolo es el padre
Juan juan es un tío guay
Pepe pepe tengo 20 años
Pepe juan es un colega
Manolo juan es el hijo
Manolo manolo padre de familia
De esto se deduce que juan conoce a pepe y manolo, pero pepe y manolo no se conocen entre si.
Espero que lo puedas entender, si vas a usar este planteamiento, preguntame de nuevo para decirte como harías los formularios.
Hola, tu planteamiento me parece más que acertado, así que me he propuesto seguirlo.
Veamos, ya he creado la tabla de RELACIONES con los campos RELACIÓN, PERSONAJE PRINCIPAL, PERSONAJE RELACIÓN.
¿Cómo sigo ahora? ¿Cómo crearía el formulario?
Imagino que debo especificar en el texto de los campos de PERSONAJE PRINCIPAL y PERSONAJE RELACIÓN que sea un cuadro de lista referido a la tabla PERSONAJES... pero prefiero no adelantarme, y dejar que me expliques los pasos, vaya a ser que meta la pata.
Muchas gracias de nuevo.
mmmmm... me temo que no era eso exactamente lo que ando buscando.
Verás, más bien lo que necesitaba era un formulario de tal manera que:
El Registro sea, digamos "Personaje", en su correspondiente caja de texto, y tal.
Otra caja de texto, en la que figure un "Personaje relacionado", que se pueda ir variando para que...
En una tercera caja de memo, se vea la relación que hay entre el personaje principal y el secundario (que se elige a través de la caja de texto con flechitas típica del cuadro de lista).
Pena no poder enviar imágenes con estos mensajes, para hacer un esquema rápido.
Gracias otra vez (y perdón por el coñazo que estoy dando...)
Exactamente eso era lo que yo tenia en mente, pero creo que seria mejor tener 2 formularios, uno para introducir las relaciones, que es el que tu dices y otro que sea con las todas las relaciones de un personaje. Digamos que para ver lo "sociable" que es, o por donde se encamina su vida.
En el segundo hay varias opciones, o haces una consulta donde personaje principal sea igual a un valor que pones, o puedes hacer un formulario de maestro detalle (el access trae un asistente) el maestro seria la tabla personajes y el detalle la tabla relaciones, donde el campo para enlazar seria personaje principal.
Espero haber explicado bien, por cierto, tengo curiosidad en saber para que es esta base de datos...
Ok, creo que, ya que me das tu permiso, me voy a tomar la libertad de hacer el post a tu dirección (para cambiar archivos y tal).
Muchísimas gracias!
No hace falta esquema, te he entendido bien, pero lo que quieres hacer, como mínimo hay que hacerlo con una macro, o poniendo un poco de código.
Tendríamos 2 combos, uno para el personaje principal y otro para el de relación, (los dos sacan datos de la tabla personajes), y luego un campo memo con la relación.
Tendrías que poner el código que te permitiera poner en el memo el que correspondiera a los 2 personajes anteriores.
-Hay que hacer una consulta y poner el valor del campo memo en ese campo. Si necesitas que te eche una mano con el código, posteame aquí, o pásame la db a [email protected]
Nos vemos
Respuesta
1
Como estas
No le entiendo muy bien lo de las coincidencias.
Pero si lo que quieres es que a medida que recorres una lista valla a pareciendo información de la personas en lista en las cajas de texto que se relacionan o corresponden a la persona debes hacer lo siguiente:
Primero que todo creas un formulario en vista de diseño, das Control R para seleccionar el formulario, después eliges propiedades y se diriges a la pestaña datos.
Luego buscas en el campo origen del registro la tabla con la que va a interactuar.
Bueno para recorrer cada registro debes hacer lo siguiente:
Creas un como box en el formulario: ¿Por ejemplo? ¿Cuadro combinado8?.
Lugo le das propiedades en el combo box y se dirige a la pestaña datos.
Te para en el campo tipo de origen de la fila y escoges tabla/consulta
Luego pasa al campo de abajo: columna dependiente y das clic en los punto suspensivos.
Aparece algo como si fueras a crear consultas, debes de elegir la tabla con la que está trabajando, debes asignar la llave, y el campo con el que usted desea identificar a la persona, si es por la cédula, por el nombre, apellido, lo más normal es por el nombre etc.
Después de hacer esto cierras sin guardar y cuando le pregunte le dice aceptar o que si.
Bueno siguiendo en propiedades del combo box te diriges a la pestaña eventos y en el campo después de actualizar das clic en los puntos suspensivos y eliges generador de código.
Y digita lo siguiente:
Me.RecordsetClone.findfirst "[Id_persona] = " & Me![Cuadro combinado8]
Me.Bookmark = Me.RecordsetClone.Bookmark
Le explico: Id_persona es la llave principal a la que usted incluyó en la consulta.
Siguiendo en propiedades del combo box se diriges a la pestaña formato y en en el campo número de columnas das 1, luego dos campos más abajo :¿? ¿Ancho de columna? Hace lo siguiente:
Teniendo en cuenta los campos que seleccionó en la consulta debes de identificar cual es el que va a mostrar cuando esté digitando, lo más normal es el nombre.
¿Entonces debes de mirar en que columna eligió el nombre entonces si lo elegiste en la columna dos debes de colocar en? ¿Ancho de columna? lo siguiente: 0cm;7cm
0cm es para el campo llave el cual no se muestra, 7cm es para el campo nombre que es el que se muestra.
Bueno para terminar cierras las propiedades
Y das control R de nuevo y eliges propiedades del formulario:
En la pestaña eventos en el campo primero: al activar el registro das clic en los puntos suspensivos y luego generador de código y pegas esto:
Cuadro_combinado8 = Id_persona
Listo esos es todo, cada vez que usted digitas el nombre de una persona el campo se autocompleta y al dar enter automáticamente sale la información que le corresponde en los otros campos de texto.
Bueno espero que halla respondido su pregunta, sino esto le servirá para otra cosa que necesites.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas