Problem med automatiskt förfallodatum

Tråden skapades och har fått 4 svar. Det senaste inlägget skrevs .
1

Vi har en faktura byggd i FileMaker 6. Uppgraderade nyligen till 8.5.

Jag är ingen hejare på FileMaker, men...

Left(Year(Today); 4) + Left(GetAsText(DayOfYear(Fakturadatum) + Betalningsvillkor); 4) - 1 & "-" & Right(GetAsText(DayOfYear(Fakturadatum) + Betalningsvillkor); 5)

...gav tidigare ett korrekt förfallodatum (fakturadatum + betalningsvillkor = förfallodatum) men i den nya versionen blir det knas. 2007-04-13 + 30 dagar ger 2139-133 som resultat.

What gives?

Det räcker ju med att du skapar ditt Förfallodatumfält som beräkning med resultat i datumformat och sen kör du bara:
fakturadatum + betalningsvillkor

OM fakturadatum är ett datumfält och betalningsvillkor är ett numeriskt fält.

Jaha, där ser man - tackar.

Saken är den att det fungerade inte tidigare, och det var därför jag fick hjälp av någon med ovanstående kod/beräkning.

Det där med hur beräkningsresultat är formatterade är viktigt här. Kanske var det orsaken till att det inte funkade tidigare. Jag svär inte på det, men har för mig att det här funkade bra redan i FMP 5.5.

Sen kan ju ovanstående beräkning leda till att förfallodatum infaller på en helg vilket är lite dumt, så då får du lägga till kontroll av vilken dag det beräknade datumet är och därefter plussa med 1 eller två dagar.

Michael har rätt, det är mycket viktigare i senare versioner av FM att hålla reda på datatyper, ett numeriskt fält är numeriskt och får bara innehålla siffror.

Om du blandar funktioner som Left() som jobbar med text med + och - som är avsedda att appliceras på siffor så blir det lätt fel, speciellt om du som lök på laxen blandar fält i beräkningen som i sin tur har olika datatyper. Även om tex ett fakturadatumfält innehåller ett datum betyder inte det att dess typ är datum. Det senare anger nämligen för FM hur det fältet skall användas i beräkningar.

En annan felkälla är Today-funktionen som alltid varit usel, den returnerar bara datumet då databasen sist öppnades, så har du en FM-databas öppen i ett par dagar blir Today-funktionen mer och mer fel.

Det finns flera datum och tid-funktioner kategorin Hämtning som är bättre, de läser alla av datorns systemklocka.

Ett typiskt fel på att man blandat datatyper fel är just att man får siffror i retur som du fick istället för det man ville ha (datum eller text eller whatever).

1
Bevaka tråden