Saltar al contenido principal

Agregar una búsqueda de varias tablas

Objetivo​

Agregar un campo que apunte a un registro de una de varias tablas: un Cliente que puede ser una cuenta o un contacto, un Pagador que puede ser cualquiera de cuatro cosas.

Requisitos previos​

  • Ha iniciado sesión con un rol de creador (o de administrador de la plataforma).
  • La tabla a la que agrega el campo existe, y también existen al menos dos tablas a las que quiere que pueda apuntar.

Pasos​

  1. Abra Tablas, elija el entorno y abra su tabla en la pestaña Campos.
  2. Seleccione Nuevo y asigne al campo un nombre para mostrar y un nombre lógico, como de costumbre.
  3. Como tipo de datos, elija Búsqueda (varias tablas).
  4. Marque las tablas a las que puede apuntar el campo. Al menos dos. Un pequeño número junto a cada tabla marcada indica el orden en que las marcó; ese es el orden que ve el usuario, de modo que la primera es la que el selector muestra al abrirse. Marque primero la más habitual.
  5. Seleccione Agregar.
  6. El campo está operativo en cuanto se agrega: como con cualquier campo, su columna existe de inmediato.

Lo que ve un usuario​

Un cuadro de búsqueda normal. Al seleccionarlo se abre un panel, y las tablas que marcó encabezan ese panel, por encima de los nombres que se están filtrando:

Customer
[ 👤 Ada Lovelace ] ← closed: the record, with its table's icon
─────────────────────────────
[ Account ] [ Contact ] ← open: the tables you ticked, in your order
Ada Lovelace ← …and the matches in whichever is selected
Ada Byron

Elegir primero la tabla no es un paso de más porque sí. «Búscame un contacto llamado Ada» y «búscame una cuenta llamada Ada» son dos búsquedas distintas sobre dos conjuntos de columnas distintos, así que una única lista de resultados combinada tendría que conciliar columnas que no se corresponden. Indicar primero la tabla significa que todo lo que hay debajo es la búsqueda que ya funciona: su búsqueda de texto, sus segundas líneas, sus imágenes, su cuadrícula de Búsqueda avanzada.

Las tablas están dentro del panel y no encima del cuadro, así que no ocupan espacio en el formulario cuando nadie está eligiendo. Por eso un registro elegido muestra el icono de su tabla al lado: con el selector de tablas fuera de la vista, el icono es lo que sigue indicando si Ada es una cuenta o un contacto. Es el icono que asignó a la tabla en el Diseñador de tablas, así que asigne iconos distintos a sus tablas si van a compartir una búsqueda de varias tablas.

Cambiar de tabla borra la selección, deliberadamente: el id de un contacto no es el de una cuenta.

Qué se almacena​

Dos cosas, en dos columnas: el id del registro y la tabla en la que está. Verá la segunda si consulta la tabla directamente: es el nombre de su columna con _type al final, y contiene el nombre lógico de la tabla.

Es la misma forma que la plataforma ya usa para el propietario de un registro, y es la razón por la que el campo es un tipo de datos independiente en lugar de una Búsqueda con una lista de destinos más larga.

La única contrapartida real: sin clave externa​

Una Búsqueda normal obtiene una clave externa real en la base de datos, de modo que la propia base de datos impide eliminar el registro al que apunta. Una búsqueda de varias tablas no puede tenerla (una sola columna no puede hacer referencia a varias tablas), así que:

  • La plataforma sigue comprobando, en cada guardado, que el registro elegido existe.
  • Pero si alguien elimina ese registro después, nada se lo impide. El campo muestra entonces la referencia sin procesar en lugar de un nombre, que es lo mismo que muestra una búsqueda normal cuando su destino ha desaparecido: visible, no silencioso.
  • Eliminar una tabla entera sigue bloqueado mientras una búsqueda de varias tablas la tenga como destino, igual que con una búsqueda normal.

Si solo necesita una tabla, use una Búsqueda simple. Obtiene la clave externa, y el diseñador se lo indicará en lugar de dejar que cree por error una columna más débil.

Las pestañas Relacionado siguen funcionando​

Cada tabla marcada obtiene su propia relación, así que un registro de cualquiera de ellas ofrece una pestaña Relacionado con los registros que apuntan a él. Un formulario de cuenta muestra sus Clientes, y también un formulario de contacto. No hay nada más que configurar.

El propietario es una de estas​

El Propietario de un registro es una referencia de varias tablas (una persona o un equipo), y se muestra con este mismo control en cualquier formulario que incluya el campo Propietario. Elegir allí un nuevo propietario hace lo mismo que el comando Asignar y pasa por las mismas comprobaciones; consulte Cambiar el propietario de un registro.

Solución de problemas​

  • «Tick at least two tables.» — con un solo destino, esto es una Búsqueda normal que ha renunciado a su clave externa a cambio de nada. Elija Búsqueda en su lugar.
  • Las tablas aparecen atenuadas al abrir un campo existente. — la lista de destinos queda fijada una vez que el campo existe, por la misma razón que el único destino de una Búsqueda: los registros ya contienen referencias que se comprobaron contra esta lista, y quitar una tabla dejaría algunas apuntando a algo que el campo dice que no puede alcanzar. Elimine el campo y agréguelo de nuevo.
  • El selector muestra nombres lógicos en lugar de nombres de tabla. — la lista de tablas del entorno aún no se ha cargado. Se resuelve un momento después; si no, vuelva a abrir el formulario.
  • El campo muestra algo como contact:9f2c… en lugar de un nombre. — el registro al que apunta se ha eliminado. Elija otro.
  • Una tabla que quiero no está en la lista. — la propia tabla del campo queda excluida, igual que en una Búsqueda normal. Se ofrecen todas las demás tablas del entorno.

Escenarios relacionados​