|
Tip 140 - "Onverklaarbare" formuleproblemen bij vreemde
bestanden 
Blij dat we deze
keer iemand uit het gekkenhuis hebben kunnen redden: "Dit
heb ik nooit meegemaakt en ik word er knettergek
van. Ik krijg een perfect werkend bestand toegestuurd
van een Amerikaanse vriend. Alles loopt op wieltjes en
ik gebruik het bestand al weken. Nieuwsgierig hoe het
precies werkt, open ik een calculatievenster en bestudeer de
formule. Ziet er knap uit! Ik wil op
OK klikken
om het formulevenster weer te sluiten en KRIJG
EEN FOUTMELDING die zegt dat mijn formule niet correct
is! Ik kan het venster dus niet meer sluiten, tenzij met
Cancel. Als
ik het daarna weer open, staat alles er netjes zoals
voorheen. Ik klik opnieuw op OK... en
daar is die foutmelding weer! Help!! Dit is hekserij,
voodoo! Ik heb al geprobeerd de komma's te vervangen door
puntkomma's, maar niets helpt."
Dit is erg, natuurlijk, temeer daar
we de correspondent goed kennen: een hele
FileMaker-crack!
Toch moet er een verklaring zijn
voor dit vreemde fenomeen.
Laat ons eerst een voorbeeldje
geven. Stel dat we de grootte van een bedrag willen
controleren: als we in het veld Bedrag een getal
groter dan 1.000 intikken, dan krijgen we een foutmelding:
"Bedrag te hoog"; in het andere geval meldt het systeem
niets: "".
If(Bedrag > 1000;"Bedrag
te hoog";"")
Wat is er aan de hand en waarom
hebben we hier te doen met een toch wel heel erg speciaal
probleem? Vooral in België en Frankrijk doet het zich
geregeld voor. Dit geeft al een hint: het zijn onze
toetsenbord-instellingen en onze Number-formats die
ons hier parten spelen, met name onze AZERTY's en onze
numerieke instellingen waarbij niet de punt maar de
komma als decimal
separator gebruikt
wordt. FileMaker gebruikt - afhankelijk van de taalversie -
in een formule de puntkomma of de komma als
parameter
separator: de komma in
de States, de puntkomma in de UK-versie . Wanneer niet de
puntkomma maar de komma actief is in je FileMaker-systeem
(en dat zie je in de functies met hun parameters bovenaan in
de rechterkolom in het calculatie-venster), dan kan het zijn
dat je computer de komma niet als
parameterseparator maar als decimaalseparator
interpreteert!
Wanneer in je formule een cijfer
gevolgd wordt door een separator, dan interpreteert
FileMaker het getal als een decimaal getal waar het
of de cijfer(s) na de komma ontbreken! Bij onze vraagsteller
stond er dus (let op de komma's in plaats van de
puntkomma's):
If(Bedrag >
1000,"Bedrag
te hoog","")
FileMaker had de puntkomma's dus
netjes vervangen door komma's, en dat werkte perfect. Maar
als je na bestudering van de formule het calculatievenster
wil sluiten, dan treedt de control engine in werking,
en die interpreteert de zaak verkeerd: het systeem ziet die
1000 als een decimaal getal (er staat immers een komma
achter), maar na die komma staat niets meer! Dit is
uiteraard een fout volgens de control engine van het
calculatie-venster: het systeem "denkt" immers dat we een
onvolledig getal ingetikt hebben. Je lost dit op door
vóór de komma een spatie tussen te voegen...
Dan is de komma niet langer een decimal separator,
maar een parameter separator... Dus:
If(Bedrag >
1000
,"Bedrag te hoog","")
|