FileMaker - Tip 9

 

Klik op om terug te keren naar het hoofdmenu.

Tip 9 - Conditional Value lists aanmaken in FileMaker 4

Enkel voor de gevorderden die de stap naar versie 5 niet gezet hebben en die niet bevreesd zijn voor een wat ingewikkeldere werkwijze...

De truc is gebaseerd op het feit dat FileMaker indexeert op unieke items. Nemen we als voorbeeld een databank met vijftig records, elk met één veld voor de voornaam. Stel dat we 10 van de 50 records invullen met John, 20 met Pete en 20 met Carl. Dan zal de index van dat veld geen vijftig items bevatten, maar slechts drie, nl. John, Pete en Carl.

Nu naar de conditional value list trick. Stel dat we een databank hebben die we Groenten en fruit noemen met daarin het veld Naam. Daarin vullen we talrijke namen in: tomaat, prei, appel, citroen, peer, ananas, aardappel, enz. Op elke record geven we aan via een radio button of we met een groente of met fruit te doen hebben; dit veld noemen we Soort. Daarnaast hebben we ook nog een hoofddatabank voor onze menu's. Daar kunnen we op een bepaald moment aanduiden of we een groente of fruit nodig hebben. Dat geven we aan door te selecteren via radio buttons: één voor groente, één voor fruit. We willen na die keuze een popup menu krijgen dat dan enkel ofwel de groenten, ofwel het fruit toont.

Hoe kunnen we dit bereiken?

Eerst en vooral dit: beide databanken moeten aan elkaar gelinkt zijn via een "trigger", een gemeenschappelijk calculatieveld met als formule "1".  Elke record van de ene databank is op die manier gelinkt aan elke record van de andere. We doen dit zoals gewoonlijk via Define Relationships.

Laten we nu terugkeren naar de databank Groenten en fruit. We maken daar een derde veld dat we Zoekcriterium noemen en dat van het type "global" is. Dat veld zullen we later via Set Field vullen vanuit de menu databank (dat kunnen we dank zij de trigger-relatie).

Dan maken we nog een vierde veld, van het type calculatie, en dat we Waarden voor value list noemen. De formule is hier de volgende:

If(Zoekcriterium = Soort;Naam;"")

Wanneer we dus in het veld Zoekcriterium de waarde "Groente" zetten, dan zal in het veld Waarden voor value list de naam verschijnen die in het veld Naam staat, anders niets. Het veld Waarden voor value list zal dus enkel de groenten tonen. Zetten we in het veld Zoekcriterium de waarde "Fruit", dan zal het veld Waarden voor value list enkel de fruitsoorten tonen.

Het enige wat nu nog te doen staat is in de Menudatabank een value list Groenten of fruit te definiëren en die te baseren op de veldinhoud van het veld Waarden voor value list van de databank met de tomaten enz. (de laatste van de twee opties wanneer we een value list definiëren).

Willen we nu enkel fruit in de value list, dan volstaat het de waarde "Fruit" in te vullen in het veld Zoekcriterium ; willen we groenten, dan vullen we daar "groente" in. En dat kan vanuit de Menudatabank via het Set Field commando.

 
avd@avd-ci.be - contactformulier