Relacionar campos entre tablas vinculadas

Tengo varias BD que contienen los mismos campos, cada BD en para una persona. En cada BD tengo un campo llamado "Asignado" que se abre un listado de las personas. Necesito que cuando abro la BD de una persona y modifique la asignación el registro desaparezca y vaya a parar a la BD de la persona que he hecho la asignación. Por otra parte, necesito que todos los datos de cada BD vaya a parar a una general y que desde esta general se pueda asignar registros a cada persona.

¿Cómo lo hago? He hecho consultas, pero no me interesa, ya que cada persona necesita acceder a su BD de forma independiente. Estoy trabajando con tablas vinculadas, pero al cambiar la asignación del registro no aparece en la tabla de la otra persona: ¿Cómo lo hago?

2

2 respuestas

Respuesta
2

Partiendo de que el sistema que tienes montado no me parece el más adecuado y operativo (véase el motivo de tu consulta), y teniendo en cuenta que con lo que explicas se pueden entender muchas cosas, te he preparado este ejemplo que creo te puede ayudar si acerté con lo que tienes.

Te comento por encima cómo hice:

.- Hay 3 BDs idénticas (Marciala, Sisebuta y Teopisto), que recogerían los datos de trabajo de esos tres comerciales. Con esto intento recrear lo que dices de "Tengo varias BD que contienen los mismos campos, cada BD en para una persona"

.- Cada BD tiene un campo "Comercial", configurado como cuadro combinado con una lista (hecha "a mano") de los tres comerciales, y cada BD tiene como valor predeterminado el comercial correspondiente (para que se rellene automáticamnte en cada registro nuevo). Con esto cubro lo de "En cada BD tengo un campo llamado "Asignado" que se abre un listado de las personas"

.- Cada BD tiene un formulario sobre esa tabla. En el evento "Después de actualizar" del cuadro combinado "Comercial", le genero un código que:

1º/ guarda el registro

2º/ inserta el registro en la tabla del comercial correspondiente (inicialmente el comercial será el usuario de la BD)

3º/ elimina el registro del comercial "que no corresponde"

Con este código soluciono lo de "cuando abro la BD de una persona y modifique la asignación el registro desaparezca y vaya a parar a la BD de la persona que he hecho la asignación"

En el código he supuesto que todas las BDs están en la misma carpeta, si no fuera así, tendrás que modificar la variable rutaBD para indicarlas.

.- La BD "Jefe" sería la BD general. Tiene 3 tablas vinculadas a cada una de las BDs de los comerciales (cada una con el nombre del comercial correspondiente), y una cuarta tabla (llamada Todos)idéntica en estructura, que tendrá en todo momento los datos de las otras 3 (ya veremos cómo)

.- En la BD Jefe hay un formulario que al abrirse hace dos operaciones: borra la tabla "Todos" y le copia los datos de cada una de las vinculadas, así siempre tienes los datos actualizados al abrirlo.

.- En el cuadro combinado Comercial, hay otro código, también en el evento "Después de actualizar" que hace la operación inversa tras guardar los cambios: elimina los datos de las tablas vinculadas y les pasa los de la tabla "Todos" correspondientes.

Con esto creo que se soluciona lo de " necesito que todos los datos de cada BD vaya a parar a una general y que desde esta general se pueda asignar registros a cada persona"

Ahora bien, yo lo que hubiera hecho para montar un sistema más "sencillo" sería:

a) Una única BD con una tabla con los datos (y el campo asignado, tal como lo tienes ahora). Esta incluso podría ser la BD general desde la que realizar asignaciones.

b) Una BD por persona, vinculada a esa tabla del punto a. Por medio de una consulta o directamente en el formulario de trabajo, filtraría los registros para que solo se mostraran los del "asignado" que usará esa tabla. Con esto ya no tienes que hacer nada al asignar un registro a otra persona, pues le "desaparecerá" de los que ve y le "aparecerá" al otro. Obviamente has de eliminar el acceso a las tablas (que ya no debieran tener los usuarios...)

c) Si la BD del punto a no la quieres usar como BD general, creas una nueva BD, la vinculas con a, y creas el formulario de asignaciones.

Simple y efectivo, jejeje.

Un saludo.


¡Muchas Gracias! 

Ahora no puedo probar lo que me recomiendas, pero lo haré mañana y te contaré si me ha funcionado.

Trabajamos mediante red y tengo la BD en una carpeta compartida. En un principio había creado la BD general y sus consultas, una para cada persona, y era estupendo pero el problema llegó cuando todas las personas a las que había creado la consulta querían acceder al archivo, que no podían.

Después vinculé las tablas, pero me falta el último paso: que al cambiar la asignación, la tarea pase de una tabla a otra. 

A ver si me funciona. Muchas gracias de nuevo!

Saludos

Respuesta
1

Quisiera poder ayudarte, pero honestamente, no entiendo casi nada. Verás, dices "tengo varias bases de datos que contienen los mismos campos". Las bases de datos no tienen campos, tienen Objetos(tablas, consultas, formularios, etc). Los campos están en las tablas y consultas.

Entiendo que en tu ordenador tienes unas bases de datos de Carlos. Accdb, Maria. Accdb, etc y que en cada una de ellas hay una tabla vinculada con la base de datos"original" que tiene Carlos, María,... en su ordenador. Si es eso, cuando en cualquiera de las tablas vinculadas, haces una anotación, queda reflejada en la otra.

Mira, tengo en la base USAR una tabla Clientes como la imagen

Observa la ciudad que tiene el primero. Cierro la base y tengo otra base Borrar en la que tengo vinculada esa tabla

Si ahora cambio la ciudad

y cierro la base Borrar y me voy a USAR

¡Muchas Gracias! Y perdón por no haberme explicado bien. Aunque veo que has visto por dónde iba. 

He llegado a hacer las tablas vinculadas y todo bien, pero el problema lo tengo cuando cambio la asignación de la tarea a otra persona. No aparece en la BD de la persona que asigno y no me desaparece de la que la tenía asignada.

Intento explicarme mejor: si tengo varias BD (una para cada persona) para asignar una tarea y en una de ellas cambio la asignación de la persona, me interesa que la tarea vaya a parar a la persona que yo asigne y que a la primera persona ya no le aparezca la tarea. 

Trabajamos mediante red y creé una BD general en una carpeta compartida, con sus consultas y me funcionaba estupendo, pero no es efectivo para trabajar, ya que el problema viene cuando cada persona tiene que acceder a su consulta porque no pueden acceder al mismo archivo desde diferentes ordenadores.

No sé si me he explicado bien. Perdón si es así y muchas gracias de nuevo por tu ayuda.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas