2010

Aug

25

Av

I FileMaker finns det kortkommando för att skriva in dagens datum (Ctrl+-/Cmd+-), men tänk om du enkelt vill ange datum för igår, i morgon, julafton eller annan dag med ett kommando? Med manus-triggers och FileMaker 11 är det möjligt att påverka innehållet i ett fält innan det valideras och sparas. 

I exemplet vill jag sätta in dagens datum i ett datumfält när jag skriver “idag”, gårdagens datum när jag skriver “igår” osv. Det går att lägga till oändligt många alternativ. Finessen består i att ta hand om värdet innan FileMaker validerar datumet. Om FileMaker validerar värdet “idag” får du meddelande om “ogiltigt datum”. Men byter du ut texten “idag” mot dagens datum innan det valideras blir det inga protester från FileMaker.

Du gör ett manus som t.ex. heter “Datumkontroll”. Genom att använda generella funktioner som Get (AktivtFältinnehåll)kan manuset och manus-triggern användas på valfritt datum-fält.

Manuset består av en enda rad:

Sätt in resultat [Markera, ...]

där punkterna ovan byts ut mot formeln:

Let([
   fält = Get ( AktivtFältinnehåll );
   d = Get (AktuelltDatum)
];
Case(
   fält = "idag";d;
   fält = "imorgon";d + 1;
   fält = "igår";d - 1;
   fält = "julafton";Date ( 12; 24; Year(d) );
   fält)
)

Formeln hämtar aktuellt innehåll i fältet och sparar det i variabeln “fält”. Variabeln “d” får dagens datum. I Case-satsen som följer görs kontroller på vad som står i fältet. Om det t.ex. står “imorgon” returneras morgondagens datum (d + 1), som sätts in i fältet med manussteget Sätt in resultat och ersätter “imorgon”. Om “fält” inte innehåller “idag”, “imorgon”, igår” eller “julafton” används det som skrivits in i fältet, som kan vara vilket datum som helst.

valideradatum

I layoutläget markerar du datumfältet och väljer Ställ in manusutlösare i menyn Utforma. Ange att manuset “Datumkontroll” ska köras för händelsen “VidObjektValidera” (OnObjectValidate).

När du skriver in “idag” i fältet kommer det att bytas ut mot dagens datum. Självklart kan du lägga in andra beräkningar, t.ex. att “idag+7″ ger ett datum en vecka framåt.

Skriv en kommentar

  • (will not be published)
  • 7 × = thirty five

Läs också: