Autor |
Mensaje |
Moderador
Adicto
   
|
#1 Publicado: 22 Jun 2012 19:15
Hola a todos he hecho la siguiente funcionalidad:
Tengo tres tablas:
Personas Actividades ActividadesPersona
Por medio de un guión asociado a la presentación ActividadesPersona asociado a un botón, abro una ventana y selecciono aquellas personas que van ha realizar esa actividad marcando cada ficha con un booleano. Luego el proceso recorre la lista y va dando las altas induciendo por un lado el Id de la persona y por otro el Id de la actividad.
El proceso funciona muy bien si no intento dar de alta a una persona que ya está apuntada a la actividad. En cuyo caso me da error de ficha duplicada.
¿Hay alguna manera de comprobar si el id de esa persona ya existe en la tabla ActividadesPersona antes de dar el alta y evitar el error de ficha duplicada?
Un saludo
Si este mensaje te ha servido de ayuda dale tu voto
, si quieres penalizarlo
El más tonto es aquel que no pregunta por no quedar como un tonto.
Mac y Filemaker 13 pro advance
|
Administrador

|
#2 Publicado: 22 Jun 2012 19:45
Tendríamos que ver como es el guió, pero a lo mejor te sirve con una búsqueda antes de cada alta. Una búsqueda del ID claro.
Si este mensaje te ha servido de ayuda dale tu voto
, si quieres penalizarlo
Todo lo que sueñas, se puede diseñar.
FM 11 * VV 6 * PHP 5 * MySQL * Win 8.
|
Moderador
Adicto
   
|
#3 Publicado: 22 Jun 2012 19:58
Aqui te pongo un pantallazo.
Si este mensaje te ha servido de ayuda dale tu voto
, si quieres penalizarlo
El más tonto es aquel que no pregunta por no quedar como un tonto.
Mac y Filemaker 13 pro advance
|
Administrador

|
#4 Publicado: 22 Jun 2012 20:24
No se que búsqueda ejecutas al principio.
En personas_publicación, que es donde creas el registro, si no quieres que se repitan los id de las personas o haces una búsqueda o le dices al campo que sea único.
Si este mensaje te ha servido de ayuda dale tu voto
, si quieres penalizarlo
Todo lo que sueñas, se puede diseñar.
FM 11 * VV 6 * PHP 5 * MySQL * Win 8.
|
Moderador
Adicto
   
|
#5 Publicado: 23 Jun 2012 23:04
La búsque da es para seleccionar todas las personas que han sido marcadas para pertenecer a esa actividad.
El binomio persona+actividad es de clave única.
Lo que hago es dar un alta por cada persona en el fichero actividadesPersona pero no se como hacer la comprobación de si ya esta incluída o no.
Gracias
Si este mensaje te ha servido de ayuda dale tu voto
, si quieres penalizarlo
El más tonto es aquel que no pregunta por no quedar como un tonto.
Mac y Filemaker 13 pro advance
|
Moderador
Adicto
   
|
#6 Publicado: 24 Jun 2012 10:34
Se me ocurre que, para que haga la comprobación antes de crear el registro, una opción podría ser la de crear 2 campos globales en "ActividadesPersona", por ejemplo: ActividadG y PersonaG. Además creas una Autorrelación de la tabla "ActividadesPersona" con dos condiciones, que ActividadG sea igual al IdActividad y que PersonaG sea igual al IdPersona de esa tabla. Antes de crear el registro, asignas los valores a los campos globales y compruebas que no haya ningun registro en la autorelación que cumpla esos criterios, es decir, que ya tenga en los campos IdActividad e IdPersona los valores que has asignado a los campos globales, mediante unos pasos de guión tal como:
If(count(Autorelacion::IdActividadPersona)) No creas el registro Else Lo creas.
El ejemplo siguiente utiliza esos pasos
Si este mensaje te ha servido de ayuda dale tu voto
, si quieres penalizarlo
Windows 8 y Filemaker 11
|
Moderador
Adicto
   
|
#7 Publicado: 24 Jun 2012 13:03
Lo voy a probar, pero creo que esto es justo lo que necesitaba. Estaba atascado en que pregunta hacer para saber si existía. "If(count(Autorelacion::IdActividadPersona))"
Muchas gracias JM
Si este mensaje te ha servido de ayuda dale tu voto
, si quieres penalizarlo
El más tonto es aquel que no pregunta por no quedar como un tonto.
Mac y Filemaker 13 pro advance
|
Moderador
Adicto
   
|
#8 Publicado: 29 Jun 2012 20:26
Ok, me ha funcionado.
Muchas gracias por tu inestimable ayuda.
Un saludo
Si este mensaje te ha servido de ayuda dale tu voto
, si quieres penalizarlo
El más tonto es aquel que no pregunta por no quedar como un tonto.
Mac y Filemaker 13 pro advance
|