Du plussar ihop text med siffror tror jag? Det brukar inte fungera så bra. Skippa middlefunktionen på aktuellt datum och använd Year istället. Var noga med dina datatyper, middle-funktionen returnerar text och använder du - (minus) på en text så konverteras den helt tokigt till något annat, även om den faktiskt innehåller siffor.
Lägg ut fälten i fråga i layouten tillfälligt så att du ser vad de faktiskt innehåller, du kan ta bort dem när det funkar.
Sedan är det i regel så att om Filemaker returnerar den första posten den hittar via en relation och det är fel post, så är det förmodligen fel på relationen som inte är tillräckligt specifik. Överlåter man åt FileMaker att "välja" post själv så väljer den alltid fel.
Jag förstår också att du har full koll på vad alla dina fält heter och vad relationerna heter och vad de innehåller, men jag som inte sett det har ju svårt att se om det skulle vara något fel i punkt 3 tex, så det ser bra ut tycker jag.
Denna funktion beräknar hur gammal en person är just idag, om man matat in ett personnummer i ett fält på formen YYYYMMDD-XXXX och ett annat fält konverterar det till ett riktigt datum på formen: YYYY-MM-DD, det senare fältet heter i beräkningen nedan Personnummer_Födelsedatum_C:
GetAsText(
Year(Get(AktuelltDatum)) - Year(Personnummer_Födelsedatum_C) - Case(GetAsNumber(Get(AktuelltDatum))< GetAsNumber(Date(Month(Personnummer_Födelsedatum_C); Day(Personnummer_Födelsedatum_C); Year(Get(AktuelltDatum)))); 1; 0)
)
& " år, " &
GetAsText(
Mod(Month(Get(AktuelltDatum)) - Month(Personnummer_Födelsedatum_C) + 12 -
Case(Day(Get(AktuelltDatum)) < Day(Personnummer_Födelsedatum_C); 1; 0); 12)
)
& " mån, " &
GetAsText(
Day(Get(AktuelltDatum)) - Day(Personnummer_Födelsedatum_C) +
Case(Day(Get(AktuelltDatum)) >= Day(Personnummer_Födelsedatum_C); 0; Day(Get(AktuelltDatum)- Day(Get(AktuelltDatum))) < Day(Personnummer_Födelsedatum_C); Day(Personnummer_Födelsedatum_C); Day(Get(AktuelltDatum)- Day(Get(AktuelltDatum))))
)
& " dagar"
Resultatet ser ut så här: "41 år, 4 mån, 23 dagar"