FileMaker - Tip 177

 

Klik op om terug te keren naar het selectiemenu.

Tip 177 - Is 23 een getal of een tekst? En maakt dat iets uit?

Iemand gebruikt geregeld een globaal veld om zijn gebruikers iets te laten intikken in een (zelfgemaakt) dialoogpaneel. De ingetikte waarde wordt dan in een script vergeleken met iets anders, en afhankelijk van het resultaat gebeurt er dan iets: ofwel zus, ofwel zo.

Maar soms bleek het gevalletje niet te werken en kwam er een verkeerd resultaat uit de bus. Wat bleek? De gebruiker tikte - geheel terecht trouwens - een getal in terwijl dat globaal veld eigenlijk een tekstveld was. FileMaker behandelde het getal dan ook als een tekst...

Wat betekent dit nu precies?

Stel dat we in tekstvelden werken en dat we 2, 15, 22 en 8 als waarden hebben. Als we die opklimmend sorteren, dan krijgen we als resultaat:

15 - 2 - 22 - 8

FileMaker behandelt deze waarden als tekst, alsof het woordjes waren (de velden zijn immers tekstvelden...) en sorteert dus volgens de regels die we gewoon zijn van het alfabet. Daarbij komt de 1 vóór de 2, en dus ook 15 (een woord dat begint met een 1) vóór 2 (een woord dat begint met 2).

En na het woordje 2 komt natuurlijk het woordje 22, en dan pas het woordje 8, heel wat anders dus dan een rekenkundige sortering die als resultaat

2 - 8 - 15 - 22

zou gegeven hebben.

Technisch is dit te verklaren doordat FileMaker in een tekstveld sorteert volgens de ASCII-waarden en niet volgens de numerieke waarden.

Dit onderwerp wordt ook behandeld in Tip 15.

 

Nog een zeer belangrijke opmerking: key fields die we gebruiken om een relatie tussen bestanden te definiëren moeten steeds tot hetzelfde type behoren: ofwel getal - getal, ofwel tekst - tekst. Als we gaan mengen (bijvoorbeeld een key 23 als tekst in de ene databank en 23 als getal in de andere databank), dan loopt het vroeg of laat gegarandeerd mis. Zo zal een GTRR* in een aantal gevallen niet werken, hoewel die (slecht) gerelateerde record toch te zien is in een portal...


* Een GTRR is een Go to Related Record.

 
avd@avd-ci.be - contactformulier