Naar hoofdinhoud gaan

Een zoekveld voor meerdere tabellen toevoegen

Doel​

Een veld toevoegen dat verwijst naar een record in een van meerdere tabellen — een Klant die een Account of een Contact kan zijn, een Betaler die een van vier dingen kan zijn.

Vereisten​

  • Je bent aangemeld met een makerrol (of de rol van platformbeheerder).
  • De tabel waaraan je het veld toevoegt, bestaat, en dat geldt ook voor ten minste twee tabellen waarnaar het moet kunnen verwijzen.

Stappen​

  1. Open Tabellen, kies de omgeving en open je tabel op het tabblad Velden.
  2. Selecteer Nieuw en geef het veld zoals gewoonlijk een weergavenaam en een logische naam.
  3. Kies als gegevenstype Zoekveld (meerdere tabellen).
  4. Vink de tabellen aan waarnaar het veld mag verwijzen. Ten minste twee. Een klein getal naast elke aangevinkte tabel toont de volgorde waarin je ze hebt aangevinkt — die volgorde ziet de gebruiker ook, dus de eerste is de tabel waarop de kiezer opent. Vink de meest gebruikte als eerste aan.
  5. Selecteer Toevoegen.
  6. Het veld is actief zodra het is toegevoegd — zoals bij elk veld bestaat de kolom meteen.

Wat een gebruiker ziet​

Een gewoon zoekvak. Als je het selecteert, opent een deelvenster, en de tabellen die je hebt aangevinkt, staan bovenaan dat deelvenster, boven de namen die ze filteren:

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

Eerst de tabel kiezen is geen extra stap omwille van zichzelf. "Zoek een contact die Ada heet" en "zoek een account die Ada heet" zijn twee verschillende zoekopdrachten over twee verschillende sets kolommen, dus één samengevoegde resultatenlijst zou kolommen op elkaar moeten afstemmen die niet overeenkomen. Door eerst de tabel te noemen, is alles daaronder het zoekveld dat al werkt — met de zoekfunctie, de tweede regels, de afbeeldingen en het raster voor Geavanceerd zoeken.

De tabellen staan in het deelvenster in plaats van boven het vak, zodat ze geen ruimte op het formulier innemen als niemand iets kiest. Daarom toont een gekozen record het pictogram van zijn tabel ernaast: nu de keuze uit beeld is, is het pictogram wat nog vertelt of Ada een account of een contact is. Het is het pictogram dat je de tabel in de Tabelontwerper hebt gegeven, dus geef je tabellen verschillende pictogrammen als ze een zoekveld voor meerdere tabellen gaan delen.

Wisselen van tabel wist de keuze, en dat is bewust: de id van een contact is niet die van een account.

Wat er wordt opgeslagen​

Twee dingen, in twee kolommen: de id van het record en de tabel waarin het staat. Je ziet de tweede als je de tabel rechtstreeks bevraagt — het is de naam van je kolom met _type erachter, en die bevat de logische naam van de tabel.

Dat is dezelfde vorm die het platform al gebruikt voor de eigenaar van een record, en het is de reden dat het veld een apart gegevenstype is in plaats van een Zoekveld met een langere lijst doelen.

Het enige echte nadeel: geen refererende sleutel​

Een gewoon Zoekveld krijgt een echte refererende sleutel in de database, zodat de database zelf weigert het record waarnaar het verwijst onder je handen te laten verwijderen. Een zoekveld voor meerdere tabellen kan er geen hebben — één kolom kan niet naar meerdere tabellen verwijzen — dus:

  • Het platform controleert bij elke opslag nog steeds of het record dat je hebt gekozen bestaat.
  • Maar als iemand dat record daarna verwijdert, houdt niets dat tegen. Het veld toont dan de ruwe verwijzing in plaats van een naam, precies wat een gewoon zoekveld toont als zijn doel verdwenen is: zichtbaar, niet stil.
  • Een hele tabel verwijderen blijft geblokkeerd zolang een zoekveld voor meerdere tabellen haar als doel noemt, net als bij een gewoon zoekveld.

Heb je maar één tabel nodig, gebruik dan een gewoon Zoekveld. Dan krijg je de refererende sleutel, en de ontwerper zegt je dat ook, in plaats van je per ongeluk een zwakkere kolom te laten bouwen.

Gerelateerde tabbladen blijven werken​

Elke aangevinkte tabel krijgt een eigen relatie, dus een record in elk van die tabellen biedt een tabblad Gerelateerd met de records die ernaar verwijzen. Een Account-formulier toont zijn Klanten; een Contact-formulier ook. Je hoeft niets extra's in te stellen.

Eigenaar is er ook een​

De Eigenaar van een record is een verwijzing naar meerdere tabellen — een persoon of een team — en wordt met hetzelfde besturingselement getoond op elk formulier waarop het veld Eigenaar staat. Daar een nieuwe eigenaar kiezen doet hetzelfde als de opdracht Toewijzen, en doorloopt dezelfde controles; zie Wijzigen wie eigenaar is van een record.

Problemen oplossen​

  • "Tick at least two tables." — met één doel is dit een gewoon Zoekveld dat zijn refererende sleutel voor niets heeft ingeleverd. Kies in plaats daarvan Zoekveld.
  • De tabellen zijn grijs als ik een bestaand veld open. — de lijst met doelen ligt vast zodra het veld bestaat, om dezelfde reden als het ene doel van een Zoekveld: records bevatten al verwijzingen die tegen deze lijst zijn gecontroleerd, en een tabel verwijderen zou sommige ervan laten verwijzen naar iets waarvan het veld zegt dat het er niet bij kan. Verwijder het veld en voeg het opnieuw toe.
  • De kiezer toont logische namen in plaats van tabelnamen. — de tabellenlijst van de omgeving is nog niet geladen. Dat lost zich een moment later op; zo niet, open het formulier dan opnieuw.
  • Het veld toont iets als contact:9f2c… in plaats van een naam. — het record waarnaar het verwijst, is verwijderd. Kies een ander.
  • Een tabel die ik wil, staat niet in de lijst. — de eigen tabel van het veld is uitgesloten, net als bij een gewoon Zoekveld. Al het andere in de omgeving wordt aangeboden.

Gerelateerde scenario's​