2008

Apr

25

Av

För ett tag sedan visade jag hur man enkelt kan göra en ändringslogg på ett fält. En metod som i och för sig även fungerar för flera fält men kan lätt bli oöverskådlig. FileMaker är fullt av användbara beräkningsfunktioner och några av dem visar sig vara förträffliga just för ändringsloggar.

I det här exemplet vill jag övervaka ett antal fält och vid varje ändring i något av dem producera en rad i logg-fältet. Antag att det är fälten “Namn”, “Adress” och “Ort” där alla ändringar ska loggas. 

Jag ska använda beräkningsfunktionen “Get (AktivtFältnamn)” som returnerar namnet på det fält där insättningspunkten finns, samt funktionen “Get (AktivtFältinnehåll”) som returnerar värdet i det fält där insättningspunkten finns.

På samma sätt som förra gången använder jag en automatisk beräkning för loggfältet (i formeln kallat “Loggfältet”), tänk på att värdet ska kunna skrivas över. En första formel blir så här:

Get (AktuellTidsstämpel ) & " (" & Get (Kontonamn) & "): " & 
Get (AktivtFältnamn) & " ändrat till " & Get (AktivtFältinnehåll) & 
"¶" & Loggfältet

Formeln ger t.ex. resultatet:

2008-04-25 08:34:11 (Admin): Namn ändrat till Rolf
2008-04-25 08:25:18 (Admin): Ort ändrat till Lund
2008-04-25 08:23:52 (Admin): Namn ändrat till Nisse

Det fattas dock något i formeln, vilka fält ska bevakas och ändringar loggas? Det räcker att dessa fält finns med i formeln på något sätt för att den ska beräknas och ändringar loggas. Jag brukar göra så här:

If(
Namn or Adress or Ort or 1;
Get (AktuellTidsstämpel ) & " (" & Get (Kontonamn) & "): " & 
Get (AktivtFältnamn) & " ändrat till " & Get (AktivtFältinnehåll) & 
"¶" & Loggfältet)

Värdet “1″ i if-satsens villkor betyder bara att beräkningen alltid ska utföras om något av fälten ändras.

Om du tilldelar fält värden i script uppdateras inte ändringsloggen, du måste då själv lägga till rader i ändringsloggen i scriptet.

Skriv en kommentar

  • (will not be published)
  • three − = 1

Läs också: