5 Formas de Crear Registros Relacionados

Hoy os voy a explicar 5 formas de crear registros relacionados en FileMaker.

Vamos a usar de ejemplo una tabla Padre y otra tabla Hijo, nos centraremos en como fabricar hijos de 5 formas distintas.

Técnica Boomerang

El nombre me lo he inventado yo, pero es una de las técnicas para crear registros relacionados de toda la vida se trata de usar el paso de guión “Ir a la presentación” crear un nuevo registro y volver a la presentación original.

Vamos a ver los Pasos del Guión

#— Capturamos la clave primaria del Padre
Establecer variable [ $PadreID; Valor:Padre::kp_PadreID ]
#— Vamos a la presentación de desarrollador "Dev_Hijo"
Ir a la presentación [ “Dev_Hijo” (z_Hijo) ]
Pausar/reanudar guión [ Duración (segundos): 1 ]
#— Creamos un nuevo registro y establecemos el campo de clave foránea
Nuevo registro/petición
Pausar/reanudar guión [ Duración (segundos): 1 ]
Establecer campo [ z_Hijo::kf_PadreID; $PadreID ]
Pausar/reanudar guión [ Duración (segundos): 1 ]
#— Volvemos a la presentación original
Ir a la presentación [ presentación original ]
Ir a la fila del portal [ Último ]
Ir al campo [ Hijo_boomerang::Nombre ]

Contras:

  • Pierde el foco que teníamos antes de ejecutar el Guión, por ejemplo si estamos en la segunda pestaña de un “Control de Pestañas” o en el registro de un portal, al volver a la presentación original, se resetean quitándonos el foco de donde lo habíamos dejado.
    Nota: Se puede tunear el guión para que antes de salir de la presentación actual guarde la información de la pestaña/ficha deslizable/fila de portal en la que nos encontramos para luego al volver ir a su correspondiente estado original, si hay interés me lo comentáis y me extiendo en como capturar el estado inicial de una presentación.

 
 

 Técnica Ventana Emergente

Crear registros relacionados con la Técnica de Ventana Emergente es casi lo mismo que la Técnica Boomerang, pero con la diferencia de tener que crear una ventana nueva antes de ir a la presentación de desarrollo.

Veamos en que consiste el guión:

#— Capturamos la clave primaria del Padre
Establecer variable [ $PadreID; Valor:Padre::kp_PadreID ]
#— Creamos una nueva Ventana y Vamos a la presentación de desarrollador "Dev_Hijo"
Nueva ventana [ Arriba: 100; Izquierdo: 100; Estilo: Documento; Cerrar: “Sí”; Minimizar: “Sí”; Maximizar: “Sí”; Área de control de ampliación “Sí”; Cambiar tamaño: “Sí” ]
Pausar/reanudar guión [ Duración (segundos): 1 ]
Ir a la presentación [ “Dev_Hijo” (z_Hijo) ]
Pausar/reanudar guión [ Duración (segundos): 1 ]
#— Creamos un nuevo registro y establecemos el campo de clave foránea
Nuevo registro/petición
Pausar/reanudar guión [ Duración (segundos): 1 ]
Establecer campo [ z_Hijo::kf_PadreID; $PadreID ]
Pausar/reanudar guión [ Duración (segundos): 1 ]
#— Cerramos la ventana recién creada
Cerrar ventana [ Ventana actual ]
#— Ponemos el foco en el portal
Ir a la fila del portal [ Último ]
Ir al campo [ Hijo_ventana::Nombre ]

Contras:

  • En windows a veces lo de crear ventanas emergentes lo gestiona de forma un poco rara☇

Nota: Se recomienda usar una ventana auxiliar oculta, para ello podemos crear un guión que abra una ventana auxiliar en modo oculto que se ejecute al abrir el archivo por primera vez, y poder acceder a ella cada vez que queramos realizar alguna maniobra de este tipo.

 
 

 Técnica Portal

PortalEsta técnica para crear registros relacionados, seguro que todos la usáis ya, pero aquí queda por si alguno andaba despistado…

Se basa en crear un portal en la presentación asociada a la tabla

Primero tenemos que establecer una relación entre la ocurrencia de tabla Padre y la de Hijo_portal creando una unión de relación de la clave primaria de la tabla Padre a la clave foránea de la tabla Hijo (Padre::kp_PadreID—=—<Hijo_portal::kf_PadreID) y marcando “Permitir la creación de registros en esta tabla través de esta relación”

Ahora solo basta crear una presentación basada en la tabla Padre y crear un portal con los datos de la ocurrencia de tabla Hijo_portal

En el portal no os olvidéis de marcar “Mostrar barra de desplazamiento vertical” para poder insertar más filas que las que están visibles.

Contras:

  • Si existen más filas que las que muestra el portal, el usuario tiene que desplazarse al final del portal para poder insertar un nuevo registro. Nota: Un apaño a este problema es crear un botón que se mueva al final del portal y posicione el cursor dentro del campo deseado.

 
 

Técnica Menos Uno

Con esta técnica necesitamos crear 2 campos, uno en la tabla Padre (CampoMenos1) y otro en la tabla Hijo (Campo1)

Cuando se cubre un campo de la ocurrencia de tabla Hijo_menosuno, se asigna automáticamente la clave foránea de la tabla Padre y fuerza al Campo1 a contener el valor -1 dado del CampoMenos1 de la tabla Padre.

Pare crear registros relacionados nuevos, basta con asignar un valor de 1 al Campo1 de la ocurrencia de tabla Hijo_menosuno.

Con esta técnica no necesitamos salir de la presentación, abrir ventanas nuevas ni tener ningún portal, ni siquiera necesitamos usar un guión, ya que desde un botón en la presentación podemos Asignarle el paso de guión “Establecer campo” especificándole el campo de destino (Hijo_menosuno::Campo1) y el resultado calculado (1).

 Pros:

  • No se pierde el foco como pasa en la Técnica Boomerang
  • No es necesario el uso de ventanas adicionales, evitando a veces los problemas de ventanas de windows.
  • No se necesitan Guiones

 
 

Técnica Magic Key

Para usar el Magic Key necesitamos crear un campo global en la tabla Padre (g_MagicKey).

Vamos a ver que pasa cuando aplicamos el paso de guión “Establecer Campo” a través de la relación Padre e  Hijo_magickey.

Si el campo g_MagicKey en la ocurrencia de tabla Padre esta vacía (Padre::g_MagicKey):
Se creará un registro relacionado en la ocurrencia de tabla Hijo_magickey, al “Establecer Campo” a través de la relación la clave primaria de la tabla Hijo_magickey (Hijo_magickey::kp_HijoID) se creará generando su Número Secuencial y copiándose en el campo de la ocurrencia de tabla Padre “g_MagicKey”, sí, es un poco raro,  misterios del FileMaker.

Si seguimos usando la función “Establecer Campo” no se crearán registros relacionados nuevos, ya que el campo g_MagicKey de la Tabla Padre coincide con la clave principal de la ocurrencia de tabla Hijo_magickey validando así la relación entre las Tablas, por lo que se podrá seguir estableciendo campos en este registro recién creado.

Al terminar de establecer campos, necesitamos borrar el contenido del Campo “g_MagicKey”.

Se puede crear este “loop” las veces que se quieran.

Pros:

  • No se pierde el foco como pasa en la Técnica Boomerang
  • No es necesario el uso de ventanas adicionales, evitando a veces los problemas de ventanas de windows.
  • Reducen la longitud de los Guiones
  • Lo contrario que ocurre con los campos normales, al Establecer o borrar el contenido del campo global g_MagicKey, automáticamente se actualiza la relación por lo que no es necesario refrescar las relaciones.

Contras:

  • Un tal Miguel Angel hizo un creado 1000 registros relacionados del tirón y encontró que es 3 veces más lento que el método Boomerang.

Extra: Con la función GetFieldName () y el paso de guión Establecer Campo por Nombre se puede hacer un guión genérico que funcione en cualquier portal.

 

Archivo de Ejemplo

Aquí os dejo el archivo de ejemplo donde se muestran las 5 formas de crear Registros Relacionados en FileMaker
Necesitáis FileMaker Pro 12 o superior.

Crear Registros Relacionados
 

Descarga aquí el Archivo de Ejemplo

 

Esto ha sido todo por hoy colegas, espero le sirva de utilidad a alguno esta recopilación de cómo crear registros relacionados, animaos a comentar, criticar o mejorar estas técnicas, o a proponer alguna nueva que conozcáis, y recordad que si necesitáis que os eche un cable con algún proyecto, no dudéis en lanzarme un correo a martin@technetium43.net.

Si os ha gustado estiraos y spamdid este artículo por las redes!!

 

Referencias:
Magic Key & Check Box Reporting por Kevin Frank
Discusión sobre Magic Key por Ben Levitan

Estírate y Compártelo...Share on FacebookTweet about this on TwitterShare on LinkedInEmail this to someoneBuffer this pageShare on Google+
Publicada en Tutos & Trucos
Tarjetas , , , , , ,

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*