Relacion en FMP

Desde una Tabla A que contiene diversos campos uno de ellos un ID numérico, puedo a través de una relación introducir los datos, actualizando los campos correspondientes, en unas tabla POR que también tiene el campo ID que es el que se utiliza para la relación. Hasta aquí todo bien.
Pero habría alguna manera de hacer lo mismo si los datos que actualizan la tabla POR pudiesen proceder de la tabla A, B o C. Que son distintas pero con el campo ID todas ellas. El campo ID siempre tendría un nº diferente en las tablas A, B y C. No veo la manera porque el campo actualizado siempre lo esta con respecto a una tabla determinada. Hay alguna solución para automatizar la entrada de esos datos en la tabla POR procedentes de cualquiera de las tablas A, B, C. (Las tablas A, B, C aunque contienen campos iguales no podrían fusionarse en una sola por razones que sería complejo de explicar. Debo mantenerlas separadas, pues la mezcla de registros entre ellas complicaría mucho la vida a los usuarios y las haría poco operatrivas)
Respuesta
1
Para que en Filemaker funcionen las bases de datos relacionales se requiere que todas las bases relacionadas contengan un campo único... tu mencionas que en todas tus bases tienes un campo ID diferente y ahí es donde esta el problema... Tu campo ID debe ser igual en todas para que puedas hacer lo que deseas... te pongo un ejemplo que creo que es lo que tu deseas ( por cierto... el tuyo es un poco complejo) pensemos que tienes una base de datos con los nombres y datos generales de los alumnos de una escuela... otra con el grupo al que pertenece el alumno y una más con las materias que cursa... les llamaremos ALUMNOS, GRUPOS Y MATERIAS... en cada una de ellas habría un campo numérico que identificaría al alumno... las relaciones serian todas por el ID del alumno... así tendría que hacer una presentación en donde en donde pondrías en la parte superior los datos del alumno, enseguida el grupo al que pertenece y al final las materias que cursa...
Con esto actualizas los datos en cada una de ellas basado en un solo campo ID único y del mismo tipo en todas ellas...
Espero haberte sido de ayuda... en caso contrario te agradecería que me enviaras un poco más claro tu ejemplo...
PD. Otra opción son los portales... ¿los has utilizado?
Ante todo muchas gracias por tu respuesta.
Es posible queme haya explicado mal. El campo ID es igual para todas las tablas. Lo que quería decir es que el contenido del campo nunca puede ser el mismo simultáneamente en las tablas A, B, C.
El problema planteado es si un campo pude ser actualizado desde tres tablas distintas pues no veo la forma de hacerlo.
Para seguir tu ejemplo las tablas serían alumnos 1, 2 y 3 pertenecientes a diversas escuelas pero todos con su ID. Y se trataría de meter los datos de alumnos procedentes de cualquiera de la tres tablas en otra común POR, en vez de tener que meter a mano los datos que ya están en alumnos 1, 2 y 3. A ver si así está un poco más claro.
Tampoco veo claro la utilización aquí de un portal
Pues no muy claro aun pero trataré de explicármelo a mi mismo... creo entender que tienes 3 bases de datos distintas y todas con un campo coincidente ID... así mismo creo entender que de una primera base de datos quieres sacar un dato especifico.. de una segunda otro y así sucesivamente... ¿es esto cierto?
Si es así puedes utilizar dos portales y un script asignado a un botón con los comandos loop y set field. Este proceso te lo puedo explicar si lo que te planteo en primera instancia es cierto.
La duda que aun persiste es lo que quieres decir con "Lo que quería decir es que el contenido del campo nunca puede ser el mismo simultáneamente en las tablas A, B, C."... esto para mi significa que en las 3 tablas todas tienen un campo definido como ID pero que el contenido del campo no es igual en ninguna de ellas... Ejemplo: Tabla A, ID=123, Tabla b, ID=312, Tabla C, ID=321. Si esto es así, tu relación nunca va a funcionar pues el indice ID en Tabla A busca una coincidencia en Tablas B y C, aunque encuentra un campo denominado ID, no encuentra una coincidencia en el contenido de los campos de B y C. Esto quiere decir que para que funcione debe haber en A, ID=123, B, ID=123 y C, ID=123, aunque los campos restantes no tengan nada en común. Si esto se cumple puedes manipular los datos de la manera que desees.
A ver si con un ejemplo está más claro. Tres departamentos diferentes (A, B, C) tienen en sus tablas una series de campos con datos de filiación. Etc. Uno de esos datos es un ID que es propio de cada ficha ( Juan Pérez ID 456, Antonio López ID 879.) Cada departamento va dando de alta a una serie de individuos al día (y a otros de baja pero eso no nos interesa). No puede nunca figurar un individuo (un ID) en más de un departamento . Por ello lo de los ID diferentes en las tres tablas.
Pero existe un cuarto departamento que tiene que trabajar con TODOS los datos de los departamentos A, B, C. Que es el X.
Si solo existiera el A y el X, o el B y el X, sería muy fácil pues con una relación al introducir el ID en X entrarían automáticamente los datos desde A o B Pero al existir varias tablas desde donde buscar los datos no se como hacerlo pues un campo creo que no se puede actualizar con tres relaciones a la vez
O sea que se trataría de poder incorporar a X los datos que se van incorporando a A, B, y C, de la forma más automatizada posible.
En la forma inversa lo estoy haciendo sin problema. Es decir pasar datos de X a A, B, o C pero eso no tiene dificultad por van de una tabla a tres diferentes y no de tres tablas a una
Espero que así quede un poco más claro
Clarísimo. Lo que tu requieres es solo una base de datos conectado en LAN... no más problemas... solo genera tu base de datos, establece un protocolo de red en Filemaker como TCP/IP, de ser posible configura tus equipos con windows 2000 y asunto arreglado... ah, establece el campo ID como único y listo...( Parece salida fácil, pero no lo es... la configuración e instalación de una red en estos días es realmente barata... vale la pena la inversión y te quitaras de problemas rápidamente. Si no es así, contesta y buscamos otra solución... lo más factible es un script para importar registros... te lo diseño sin problema)
No acabo de entender bien tu solución.
La red ya está establecida. Las tablas A, B, C y POR están en distintos ordenadores conectados por TCP/IP .
Por otro lado lo de importar los registros no lo veo claro. No por el hecho en sí, sino porque supondría que no se puede ir viendo en POR a medida que los datos van ingresando en A, B, o C Sólo los registros que van entrando en ellas serían los que hay que actualizar en POR ya que los otros estarían ya en X. En todo caso debería ser una importación selectiva, sólo de los registros que se vayan incorporando a las tablas A, B o C para no duplicarlos en X.
Además, no se si lo comenté, existe una relación que introduce datos desde X a las otras tres tablas. Al introducir un nuevo registro (cuyo ID es coincidente) . Datos propios de la tabla X
(Los datos que entrarían en X desde A, B, C, serían datos de filiación mientras que algunos de los que se verían en A, B, C, procedentes de X son propios del departamento X pero que deben ser también utilizados por los otros tres. Esta parte está completamente resuelta sin problemas).
Para que quede más claro los datos de filiación de todos los registros de A, B, C, deben aparecer en X pero deben ir incorporándose a medida que van entrando en ellas, para que a su vez puedan pasar a A, B, C, los correspondientes procedentes de X.
Lo que no entiendo aun es por que generaste 3 bases de datos diferentes si por lo que veo solo necesitas una (la famosa X)... No te compliques la vida... como lo veo ( o como lo entiendo ) no requieres de 3 bases de datos... (las multinombradas A, B y C)... Si ya tienes en red tu sistema, utiliza X como base de datos única y compartida, validando el campo ID como único ( en la parte de opciones de validación de campo "No vacío", "Unico" y "Existente") y olvidate de la relación de X a AB y C... cuando se estén capturando los datos, estos se actualizan automáticamente sin necesidad de relaciones.. ahora que si lo que quieres es que las personas que capturan no tengan acceso a estos datos, genera presentaciones diferentes para cada usuario...
A ver si ahora si... je je
Ante todo pedirte disculpa por la tardanza desde mi última respuesta pero es que un viaje por razones de trabajo me han impedido estar en ello.
La solución final que he adoptadop ha sido la de introducir una tercera l tabla relaciona que tiene como misión recibir las actualizaciones diarias que se realizxan en A, b, c y que mediante un guión se introduce en la X. que a su vez una vez recibida borra la información de esa tabla intermedia.
Con ello todo funciona a la perfección según lo esperado.
Muchas gracias por tu ayuda y hasta la próxima

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas