www.filemaker-konferenz.com
FileMaker Konferenz | Hamburg | 22.-24. Juni 2022
Was sind Custom Functions?
Wie erstellt man Custom Functions?
Thomas Hirt
Custom Functions für Einsteiger
FileMaker Konferenz | Hamburg | 22.-24. Juni 2022
Custom Functions für Einsteiger – Thomas Hirt
Über den Sprecher
• Studium der Biochemie und des Software Engineering
• betreut seit 25+ Jahren Kleinunternehmen und
Privatkunden in Informatikbelangen
• Geschäftsführer und Inhaber der Tek:Guides GmbH
• Windows Umgebungen als Hauptbetätigungsfeld
• Einsatz von FileMaker als Entwicklungsplattform seit 2009
FileMaker Konferenz | Hamburg | 22.-24. Juni 2022
Custom Functions für Einsteiger – Thomas Hirt
Inhalt
• FileMaker Funktionen als Grundlage von Custom Functions
• Funktionen in der FileMaker Entwicklungsumgebung
• Funktionsreferenz in der FileMaker Hilfe
• Wie erstellt man Custom Functions? – Teil 1
• Erstellung von Custom Functions
• ein ganz einfaches Beispiel
• Eigenschaften von Custom Functions
• Wie erstellt man Custom Functions? – Teil 2
• wichtige Strukturbausteine
• Beispiele als Ideengeber
• Wann sind Custom Functions sinnvoll?
FileMaker Konferenz | Hamburg | 22.-24. Juni 2022
Custom Functions für Einsteiger – Thomas Hirt
FileMaker Funktionen als Grundlage
von Custom Functions
FileMaker Konferenz | Hamburg | 22.-24. Juni 2022
Custom Functions für Einsteiger – Thomas Hirt
Funktionen in der FileMaker
Entwicklungsumgebung
FileMaker Konferenz | Hamburg | 22.-24. Juni 2022
Custom Functions für Einsteiger – Thomas Hirt
Funktionen in der FileMaker
Entwicklungsumgebung
FileMaker Konferenz | Hamburg | 22.-24. Juni 2022
Custom Functions für Einsteiger – Thomas Hirt
Funktionen in der FileMaker
Entwicklungsumgebung
?
FileMaker Konferenz | Hamburg | 22.-24. Juni 2022
Custom Functions für Einsteiger – Thomas Hirt
Funktionen in der FileMaker
Entwicklungsumgebung
FileMaker Konferenz | Hamburg | 22.-24. Juni 2022
Custom Functions für Einsteiger – Thomas Hirt
Funktionen in der FileMaker
Entwicklungsumgebung
FileMaker Konferenz | Hamburg | 22.-24. Juni 2022
Custom Functions für Einsteiger – Thomas Hirt
Funktionen in der FileMaker
Entwicklungsumgebung
FileMaker Konferenz | Hamburg | 22.-24. Juni 2022
Custom Functions für Einsteiger – Thomas Hirt
Funktionen in der FileMaker
Entwicklungsumgebung
FileMaker Konferenz | Hamburg | 22.-24. Juni 2022
Custom Functions für Einsteiger – Thomas Hirt
Funktionen in der FileMaker
Entwicklungsumgebung
FileMaker Konferenz | Hamburg | 22.-24. Juni 2022
Custom Functions für Einsteiger – Thomas Hirt
Funktionen in der FileMaker
Entwicklungsumgebung
FileMaker Konferenz | Hamburg | 22.-24. Juni 2022
Custom Functions für Einsteiger – Thomas Hirt
Funktionen in der FileMaker
Entwicklungsumgebung
FileMaker Konferenz | Hamburg | 22.-24. Juni 2022
Custom Functions für Einsteiger – Thomas Hirt
Funktionen in der FileMaker
Entwicklungsumgebung
FileMaker Konferenz | Hamburg | 22.-24. Juni 2022
Custom Functions für Einsteiger – Thomas Hirt
Funktionen in der FileMaker
Entwicklungsumgebung
FileMaker Konferenz | Hamburg | 22.-24. Juni 2022
Custom Functions für Einsteiger – Thomas Hirt
Funktionen in der FileMaker
Entwicklungsumgebung
FileMaker Konferenz | Hamburg | 22.-24. Juni 2022
Custom Functions für Einsteiger – Thomas Hirt
Funktionen in der FileMaker
Entwicklungsumgebung
FileMaker Konferenz | Hamburg | 22.-24. Juni 2022
Custom Functions für Einsteiger – Thomas Hirt
Funktionen in der FileMaker
Entwicklungsumgebung
FileMaker Konferenz | Hamburg | 22.-24. Juni 2022
Custom Functions für Einsteiger – Thomas Hirt
Funktionen in der FileMaker
Entwicklungsumgebung
FileMaker Konferenz | Hamburg | 22.-24. Juni 2022
Custom Functions für Einsteiger – Thomas Hirt
Funktionsreferenz in FileMaker Hilfe
FileMaker Konferenz | Hamburg | 22.-24. Juni 2022
Custom Functions für Einsteiger – Thomas Hirt
Funktionsreferenz in FileMaker Hilfe
FileMaker Konferenz | Hamburg | 22.-24. Juni 2022
Custom Functions für Einsteiger – Thomas Hirt
Wie erstellt man Custom Functions?
Teil 1
FileMaker Konferenz | Hamburg | 22.-24. Juni 2022
Custom Functions für Einsteiger – Thomas Hirt
Erstellung von Custom Functions
FileMaker Konferenz | Hamburg | 22.-24. Juni 2022
Custom Functions für Einsteiger – Thomas Hirt
Erstellung von Custom Functions
FileMaker Konferenz | Hamburg | 22.-24. Juni 2022
Custom Functions für Einsteiger – Thomas Hirt
Erstellung von Custom Functions
FileMaker Konferenz | Hamburg | 22.-24. Juni 2022
Custom Functions für Einsteiger – Thomas Hirt
Erstellung von Custom Functions
FileMaker Konferenz | Hamburg | 22.-24. Juni 2022
Custom Functions für Einsteiger – Thomas Hirt
ein ganz einfaches Beispiel
• Ausgabe des deutschen Wochentags zu einem Datum
• Schritt 1: durchsuchen der FileMaker Funktionen aus dem Bereich "Datum"
• Schritt 2: durchsuchen der FileMaker Funktionen aus dem Bereich "Logik", um
einen geeigneten Logarithmus zu ersinnen
• Kombination der ausgesuchten Funktionen zu einer eigenen "Custom Function"
mit dem Namen "Wochentag" und einem Parameter "datum"
• Wochentag ( datum )
FileMaker Konferenz | Hamburg | 22.-24. Juni 2022
Custom Functions für Einsteiger – Thomas Hirt
ein ganz einfaches Beispiel
FileMaker Konferenz | Hamburg | 22.-24. Juni 2022
Custom Functions für Einsteiger – Thomas Hirt
ein ganz einfaches Beispiel
• DayOfWeek ( date )
• liefert als Antwort die Zahl 1 für einen Sonntag, 2 für einen Montag, etc.
• DayOfWeek ( Date ( 6 ; 18 ; 2020 ) )
• FileMaker erledigt für uns also bereits die eigentliche Berechnung des
Wochentags. Wir müssen nur noch die Zahlen der deutschen Bezeichnung
zuordnen.
FileMaker Konferenz | Hamburg | 22.-24. Juni 2022
Custom Functions für Einsteiger – Thomas Hirt
ein ganz einfaches Beispiel
FileMaker Konferenz | Hamburg | 22.-24. Juni 2022
Custom Functions für Einsteiger – Thomas Hirt
ein ganz einfaches Beispiel
FileMaker Konferenz | Hamburg | 22.-24. Juni 2022
Custom Functions für Einsteiger – Thomas Hirt
ein ganz einfaches Beispiel
FileMaker Konferenz | Hamburg | 22.-24. Juni 2022
Custom Functions für Einsteiger – Thomas Hirt
ein ganz einfaches Beispiel
FileMaker Konferenz | Hamburg | 22.-24. Juni 2022
Custom Functions für Einsteiger – Thomas Hirt
ein ganz einfaches Beispiel
FileMaker Konferenz | Hamburg | 22.-24. Juni 2022
Custom Functions für Einsteiger – Thomas Hirt
ein ganz einfaches Beispiel
FileMaker Konferenz | Hamburg | 22.-24. Juni 2022
Custom Functions für Einsteiger – Thomas Hirt
ein ganz einfaches Beispiel
FileMaker Konferenz | Hamburg | 22.-24. Juni 2022
Custom Functions für Einsteiger – Thomas Hirt
ein ganz einfaches Beispiel
• Choose ( test ; result0 {; result1 ; result2…} )
• eine Berechnung ("test") muss natürliche Zahlen beginnend mit 0 ausgeben
• nach der Berechnung werden der Reihe nach die Werte aufgezählt, welche den
Ergebnissen 0, 1, 2, usw. zugeordnet werden
• Wir können die Funktionen "Choose" und "DayOfWeek" miteinander
kombinieren:
Choose (
DayOfWeek ( datum ) - 1;
"Sonntag";
"Montag";
"Dienstag";
"Mittwoch";
"Donnerstag";
"Freitag";
"Samstag"
)
FileMaker Konferenz | Hamburg | 22.-24. Juni 2022
Custom Functions für Einsteiger – Thomas Hirt
ein ganz einfaches Beispiel
FileMaker Konferenz | Hamburg | 22.-24. Juni 2022
Custom Functions für Einsteiger – Thomas Hirt
ein ganz einfaches Beispiel
FileMaker Konferenz | Hamburg | 22.-24. Juni 2022
Custom Functions für Einsteiger – Thomas Hirt
ein ganz einfaches Beispiel
FileMaker Konferenz | Hamburg | 22.-24. Juni 2022
Custom Functions für Einsteiger – Thomas Hirt
ein ganz einfaches Beispiel
FileMaker Konferenz | Hamburg | 22.-24. Juni 2022
Custom Functions für Einsteiger – Thomas Hirt
ein ganz einfaches Beispiel
FileMaker Konferenz | Hamburg | 22.-24. Juni 2022
Custom Functions für Einsteiger – Thomas Hirt
ein ganz einfaches Beispiel
FileMaker Konferenz | Hamburg | 22.-24. Juni 2022
Custom Functions für Einsteiger – Thomas Hirt
ein ganz einfaches Beispiel
FileMaker Konferenz | Hamburg | 22.-24. Juni 2022
Custom Functions für Einsteiger – Thomas Hirt
ein ganz einfaches Beispiel
FileMaker Konferenz | Hamburg | 22.-24. Juni 2022
Custom Functions für Einsteiger – Thomas Hirt
ein ganz einfaches Beispiel
FileMaker Konferenz | Hamburg | 22.-24. Juni 2022
Custom Functions für Einsteiger – Thomas Hirt
Eigenschaften von Custom Functions
FileMaker Konferenz | Hamburg | 22.-24. Juni 2022
Custom Functions für Einsteiger – Thomas Hirt
Eigenschaften von Custom Functions
• begrenzt im Umfang
• Name ≤ 100 Zeichen
• max. 30’000 Zeichen
• verschachtelte Aufrufe limitiert
• max. 50’000 Schleifendurchläufe
• max. 50’000 rekursive Aufrufe
• max. Verschachtelung gleichzeitig aktiver Aufrufe: 10’000
• Verschachtelungstiefe auf eigenes Risiko mit SetRecursion () änderbar
• Limitationen im Prinzip identisch zu Berechnungen
• Debugging von Hand im Data Viewer, keine Unterstützung durch Debugger
• in andere Lösungen importierbar, Reihenfolge bei Import kritisch
FileMaker Konferenz | Hamburg | 22.-24. Juni 2022
Custom Functions für Einsteiger – Thomas Hirt
Wie erstellt man Custom Functions?
Teil 2
FileMaker Konferenz | Hamburg | 22.-24. Juni 2022
Custom Functions für Einsteiger – Thomas Hirt
wichtige Strukturbausteine
Let (
[
wert1 = meineBerechnung1;
wert2 = meineBerechnung2;
wert3 = meineBerechnung1;
...
wertN = meineBerechnungN
];
berechnungRückgabewert
)
FileMaker Konferenz | Hamburg | 22.-24. Juni 2022
Custom Functions für Einsteiger – Thomas Hirt
wichtige Strukturbausteine
If (
bedingung = wert;
berechnungRückgabewert1;
berechnungRückgabewert2
)
Case (
bedingung1 = wert1;
berechnungRückgabewert1;
bedingung2 = wert2;
berechnungRückgabewert2;
...
bedingungN = wertN;
berechnungRückgabewertN;
berechnungRückgabewertUniversell
)
FileMaker Konferenz | Hamburg | 22.-24. Juni 2022
Custom Functions für Einsteiger – Thomas Hirt
wichtige Strukturbausteine
While (
[
startVariable1 = wert1;
startVariable1 = wert1;
...
startVariableN = wertN
];
bedingung;
[
schleifenVariable1 = berechnung1;
schleifenVariable2 = berechnung2;
...
schleifenVariableN = berechnungN
];
berechnungRückgabewert
)
FileMaker Konferenz | Hamburg | 22.-24. Juni 2022
Custom Functions für Einsteiger – Thomas Hirt
wichtige Strukturbausteine
Evaluate (
)
Text, welcher zur Laufzeit (z.B. mittels Variablen)
zusammengebaut wird und danach als Berechnung
interpretiert wird
FileMaker Konferenz | Hamburg | 22.-24. Juni 2022
Custom Functions für Einsteiger – Thomas Hirt
wichtige Strukturbausteine
Die Strukturelemente "Let", "If", "Case", "While"
und "Evaluate" lassen sich beliebig kombinieren
und ineinander verschachteln, so dass auch sehr
komplexe Berechnungen abgebildet werden können.
FileMaker Konferenz | Hamburg | 22.-24. Juni 2022
Custom Functions für Einsteiger – Thomas Hirt
wichtige Strukturbausteine
Let (
[
wert1 = If (
bedingung = wert;
berechnungRückgabewert1;
berechnungRückgabewert2
);
wert2 = meineBerechnung2;
wert3 = Evaluate ( XXXXXXXXXXXXXXXXXXXXXX );
wert4 = 123...
];
Case (
bedingungX = wertX;
berechnungRückgabewertX;
bedingungY = wertY;
berechnungRückgabewertY;
berechnungRückgabewertUniversell
)
)
FileMaker Konferenz | Hamburg | 22.-24. Juni 2022
Custom Functions für Einsteiger – Thomas Hirt
Beispiel 1: Alter
• Beim erstellen von Custom Function Bibliotheken ist es sinnvoll, die Funktionen
thematisch zu gliedern. Der erste Teil des Funktionsnamens ("time.") hat
diesen Zweck.
• Es wird ein Parameter dateOfBirth übergeben. Es ist wichtig zu überprüfen,
ob dieser Parameter ein geeignetes Format hat.
time.age ( dateOfBirth )
FileMaker Konferenz | Hamburg | 22.-24. Juni 2022
Custom Functions für Einsteiger – Thomas Hirt
Beispiel 1: Alter
• Lösungsidee:
• Näherungsweise kann das Alter berechnet werden, indem man von der
aktuell gültigen Jahreszahl das Jahr des Geburtstages abzieht.
• Es muss zusätzlich berücksichtigt werden, ob der Geburtstag im aktuellen
Jahr schon vorbei ist oder nicht.
time.age ( dateOfBirth )
Jahr
Geburtstag
aktuelles Jahr - Geburtsjahr
aktuelles Jahr - Geburtsjahr - 1
FileMaker Konferenz | Hamburg | 22.-24. Juni 2022
Custom Functions für Einsteiger – Thomas Hirt
Beispiel 1: Alter
Einfache Methode, um
sicherzustellen, dass der
übergebene Parameter
das richtige Format hat.
Let (
[
// aktuelles Datum
_today = Get ( CurrentDate );
_todayY = Year ( _today );
_todayM = Month ( _today );
_todayD = Day ( _today );
// Geburtstag
_birthday = GetAsDate ( dateOfBirth );
_birthdayY = Year ( _birthday );
_birthdayM = Month ( _birthday );
_birthdayD = Day ( _birthday );
// Geburtstag dieses Jahr schon vorbei?
_birthdayPast = Case (
_todayM > _birthdayM; 1;
( _todayM = _birthdayM ) and ( _todayD ≥ _birthdayD ); 1;
0
)
];
// Altersberechnung
If (
_birthdayPast;
_todayY - _birthdayY;
_todayY - _birthdayY - 1
)
)
FileMaker Konferenz | Hamburg | 22.-24. Juni 2022
Custom Functions für Einsteiger – Thomas Hirt
Ausgangsdaten
Beispiel 2: Seitenzahlen
Ziel
• gegeben sei eine Liste von
Seitenzahlen in aufsteigender
Reihenfolge
• Die Seitenzahlen werden durch
Absatzmarken getrennt, d.h. pro
Zeile findet sich eine Seitenzahl.
• Die Liste der Seitenzahlen soll auf
einer Zeile dargestellt werden.
• Die Seitenzahlen sollen durch
Kommas und Abstand voneinander
getrennt werden.
• Aufeinanderfolgende Seitenzahlen
sollen als Serie xx-yy dargestellt
werden, um die Liste zu verkürzen.
FileMaker Konferenz | Hamburg | 22.-24. Juni 2022
Custom Functions für Einsteiger – Thomas Hirt
Ausgangsdaten
Beispiel 2: Seitenzahlen
Ziel
5
9
22
23
24
25
51
67
103
104
5, 9, 22-25, 51, 67, 103-104
FileMaker Konferenz | Hamburg | 22.-24. Juni 2022
Custom Functions für Einsteiger – Thomas Hirt
Beispiel 2: Seitenzahlen
numbers.list.shorten ( listOfNumbers )
While (
[
_shortenedList = "";
_remainingList = listOfNumbers;
_lastNumber = 0;
_lastNumberWasInSeries = 0
];
not IsEmpty ( _remainingList );
[
// nächste Zahl in Ausgangsliste merken
// Zahl an verkürzte Liste anhängen
// Ausgangsliste um 1 Zahl verkürzen
];
_shortenedList
)
FileMaker Konferenz | Hamburg | 22.-24. Juni 2022
Custom Functions für Einsteiger – Thomas Hirt
Beispiel 2: Seitenzahlen
_remainingNumberCount = ValueCount ( _remainingList );
_currentNumber = GetValue ( _remainingList; 1 );
_currentNumberIsInSeries = If ( _currentNumber - 1 = _lastNumber; 1; 0 );
_shortenedList = Case (
IsEmpty ( _shortenedList );
_currentNumber;
_currentNumberIsInSeries and _remainingNumberCount = 1;
_shortenedList & "-" & _currentNumber;
_currentNumberIsInSeries;
_shortenedList;
_lastNumberWasInSeries;
_shortenedList & "-" & _lastNumber & ", " & _currentNumber;
_shortenedList & ", " & _currentNumber
);
_lastNumber = _currentNumber;
_lastNumberWasInSeries = If ( _currentNumberIsInSeries; 1; 0 );
_remainingList = RightValues ( _remainingList; _remainingNumberCount-1 )
FileMaker Konferenz | Hamburg | 22.-24. Juni 2022
Custom Functions für Einsteiger – Thomas Hirt
While (
[
_shortenedList = "";
_remainingList = listOfNumbers;
_lastNumber = 0;
_lastNumberWasInSeries = 0
];
not IsEmpty ( _remainingList );
[
_remainingNumberCount = ValueCount ( _remainingList );
_currentNumber = GetValue ( _remainingList ; 1 );
_currentNumberIsInSeries = If ( _currentNumber - 1 = _lastNumber ; 1 ; 0 );
_shortenedList = Case (
// This is the 1st iteration.
IsEmpty ( _shortenedList );
_currentNumber;
// The current number belongs to an active series of neighbouring numbers.
// The current number is the last number in the list.
_currentNumberIsInSeries and _remainingNumberCount = 1;
_shortenedList & "-" & _currentNumber;
// The current number belongs to an active series of neighbouring numbers.
_currentNumberIsInSeries;
_shortenedList;
// The current number does not belong to an active series of neighbouring numbers
// but the last number did. Hence, the last number terminates a series.
_lastNumberWasInSeries;
_shortenedList & "-" & _lastNumber & ", " & _currentNumber;
// Neither the last nor the current number belongs to a series of neighbouring numbers.
// We can simply add the current number.
_shortenedList & ", " & _currentNumber
);
_lastNumber = _currentNumber;
_lastNumberWasInSeries = If ( _currentNumberIsInSeries ; 1 ; 0 );
_remainingList = RightValues ( _remainingList ; _remainingNumberCount - 1 )
];
_shortenedList
)
Beispiel 2: Seitenzahlen
FileMaker Konferenz | Hamburg | 22.-24. Juni 2022
Custom Functions für Einsteiger – Thomas Hirt
Wann sind Custom Functions
sinnvoll?
FileMaker Konferenz | Hamburg | 22.-24. Juni 2022
Custom Functions für Einsteiger – Thomas Hirt
eher sinnvoll
Wann sind Custom Functions sinnvoll?
eher nicht sinnvoll
• wiederverwenbar
• klar umrissene Funktion
• wenige bis gar keine Abhängigkeiten
• nicht allzu umfangreich und lang
• Fälle zum Testen gut erstellbar,
Testaufwand überschaubar
(Stichwort: "Unit Tests")
• einmalige Verwendung
• Abhängigkeiten zwingend gegeben
• komplex oder sehr komplex
• Funktionalität nicht nachvollziehbar
(Stichtwort: "Black Box")
• Testaufwand gross bis sehr gross
FileMaker Konferenz | Hamburg | 22.-24. Juni 2022
Custom Functions für Einsteiger – Thomas Hirt
Custom Functions
Wann sind Custom Functions sinnvoll?
FileMaker Skripten
• klar umrissene Funktionen
• wenige bis gar keine Abhängigkeiten
• nicht allzu umfangreich und komplex
• FileMaker Funktionen als Basis
• Kommentare im Code zwar möglich,
aber nicht wirklich vorgesehen
• Testing von Hand im Data Viewer
• alle Arten von Algorithmen
• mit oder ohne Abhängigkeiten
• ganz simpel bis sehr komplex
• FileMaker Skriptschritte und
FileMaker Funktionen als Basis
• umfangreiche Kommentare im Code
problemlos möglich
• Testing mit Hilfe des Debuggers
FileMaker Konferenz | Hamburg | 22.-24. Juni 2022
Custom Functions für Einsteiger – Thomas Hirt
Q & R
Vielen Dank für Ihr Interesse!
FileMaker Konferenz | Hamburg | 22.-24. Juni 2022
Custom Functions für Einsteiger – Thomas Hirt
Links auf Tools
• Custom Function Sammlungen
• https://www.briandunning.com/filemaker-custom-functions/
• https://github.com/chivalry/filemaker-custom-functions
• https://github.com/jbante/FileMaker-
Techniques/tree/master/CustomFunctions
• kostenlose Text-Editoren für Entwickler
• https://notepad-plus-plus.org/ (Windows)
• https://code.visualstudio.com/ (Win, macOS, Linux)
Plugin für FileMaker Code Highlighting verfügbar
FileMaker Konferenz | Hamburg | 22.-24. Juni 2022
Custom Functions für Einsteiger – Thomas Hirt
Vielen Dank unseren Sponsoren

FMK2022 CustomFunctions Fuer Einsteiger - Thomas Hirt

  • 1.
    www.filemaker-konferenz.com FileMaker Konferenz |Hamburg | 22.-24. Juni 2022 Was sind Custom Functions? Wie erstellt man Custom Functions? Thomas Hirt Custom Functions für Einsteiger
  • 2.
    FileMaker Konferenz |Hamburg | 22.-24. Juni 2022 Custom Functions für Einsteiger – Thomas Hirt Über den Sprecher • Studium der Biochemie und des Software Engineering • betreut seit 25+ Jahren Kleinunternehmen und Privatkunden in Informatikbelangen • Geschäftsführer und Inhaber der Tek:Guides GmbH • Windows Umgebungen als Hauptbetätigungsfeld • Einsatz von FileMaker als Entwicklungsplattform seit 2009
  • 3.
    FileMaker Konferenz |Hamburg | 22.-24. Juni 2022 Custom Functions für Einsteiger – Thomas Hirt Inhalt • FileMaker Funktionen als Grundlage von Custom Functions • Funktionen in der FileMaker Entwicklungsumgebung • Funktionsreferenz in der FileMaker Hilfe • Wie erstellt man Custom Functions? – Teil 1 • Erstellung von Custom Functions • ein ganz einfaches Beispiel • Eigenschaften von Custom Functions • Wie erstellt man Custom Functions? – Teil 2 • wichtige Strukturbausteine • Beispiele als Ideengeber • Wann sind Custom Functions sinnvoll?
  • 4.
    FileMaker Konferenz |Hamburg | 22.-24. Juni 2022 Custom Functions für Einsteiger – Thomas Hirt FileMaker Funktionen als Grundlage von Custom Functions
  • 5.
    FileMaker Konferenz |Hamburg | 22.-24. Juni 2022 Custom Functions für Einsteiger – Thomas Hirt Funktionen in der FileMaker Entwicklungsumgebung
  • 6.
    FileMaker Konferenz |Hamburg | 22.-24. Juni 2022 Custom Functions für Einsteiger – Thomas Hirt Funktionen in der FileMaker Entwicklungsumgebung
  • 7.
    FileMaker Konferenz |Hamburg | 22.-24. Juni 2022 Custom Functions für Einsteiger – Thomas Hirt Funktionen in der FileMaker Entwicklungsumgebung ?
  • 8.
    FileMaker Konferenz |Hamburg | 22.-24. Juni 2022 Custom Functions für Einsteiger – Thomas Hirt Funktionen in der FileMaker Entwicklungsumgebung
  • 9.
    FileMaker Konferenz |Hamburg | 22.-24. Juni 2022 Custom Functions für Einsteiger – Thomas Hirt Funktionen in der FileMaker Entwicklungsumgebung
  • 10.
    FileMaker Konferenz |Hamburg | 22.-24. Juni 2022 Custom Functions für Einsteiger – Thomas Hirt Funktionen in der FileMaker Entwicklungsumgebung
  • 11.
    FileMaker Konferenz |Hamburg | 22.-24. Juni 2022 Custom Functions für Einsteiger – Thomas Hirt Funktionen in der FileMaker Entwicklungsumgebung
  • 12.
    FileMaker Konferenz |Hamburg | 22.-24. Juni 2022 Custom Functions für Einsteiger – Thomas Hirt Funktionen in der FileMaker Entwicklungsumgebung
  • 13.
    FileMaker Konferenz |Hamburg | 22.-24. Juni 2022 Custom Functions für Einsteiger – Thomas Hirt Funktionen in der FileMaker Entwicklungsumgebung
  • 14.
    FileMaker Konferenz |Hamburg | 22.-24. Juni 2022 Custom Functions für Einsteiger – Thomas Hirt Funktionen in der FileMaker Entwicklungsumgebung
  • 15.
    FileMaker Konferenz |Hamburg | 22.-24. Juni 2022 Custom Functions für Einsteiger – Thomas Hirt Funktionen in der FileMaker Entwicklungsumgebung
  • 16.
    FileMaker Konferenz |Hamburg | 22.-24. Juni 2022 Custom Functions für Einsteiger – Thomas Hirt Funktionen in der FileMaker Entwicklungsumgebung
  • 17.
    FileMaker Konferenz |Hamburg | 22.-24. Juni 2022 Custom Functions für Einsteiger – Thomas Hirt Funktionen in der FileMaker Entwicklungsumgebung
  • 18.
    FileMaker Konferenz |Hamburg | 22.-24. Juni 2022 Custom Functions für Einsteiger – Thomas Hirt Funktionen in der FileMaker Entwicklungsumgebung
  • 19.
    FileMaker Konferenz |Hamburg | 22.-24. Juni 2022 Custom Functions für Einsteiger – Thomas Hirt Funktionen in der FileMaker Entwicklungsumgebung
  • 20.
    FileMaker Konferenz |Hamburg | 22.-24. Juni 2022 Custom Functions für Einsteiger – Thomas Hirt Funktionen in der FileMaker Entwicklungsumgebung
  • 21.
    FileMaker Konferenz |Hamburg | 22.-24. Juni 2022 Custom Functions für Einsteiger – Thomas Hirt Funktionsreferenz in FileMaker Hilfe
  • 22.
    FileMaker Konferenz |Hamburg | 22.-24. Juni 2022 Custom Functions für Einsteiger – Thomas Hirt Funktionsreferenz in FileMaker Hilfe
  • 23.
    FileMaker Konferenz |Hamburg | 22.-24. Juni 2022 Custom Functions für Einsteiger – Thomas Hirt Wie erstellt man Custom Functions? Teil 1
  • 24.
    FileMaker Konferenz |Hamburg | 22.-24. Juni 2022 Custom Functions für Einsteiger – Thomas Hirt Erstellung von Custom Functions
  • 25.
    FileMaker Konferenz |Hamburg | 22.-24. Juni 2022 Custom Functions für Einsteiger – Thomas Hirt Erstellung von Custom Functions
  • 26.
    FileMaker Konferenz |Hamburg | 22.-24. Juni 2022 Custom Functions für Einsteiger – Thomas Hirt Erstellung von Custom Functions
  • 27.
    FileMaker Konferenz |Hamburg | 22.-24. Juni 2022 Custom Functions für Einsteiger – Thomas Hirt Erstellung von Custom Functions
  • 28.
    FileMaker Konferenz |Hamburg | 22.-24. Juni 2022 Custom Functions für Einsteiger – Thomas Hirt ein ganz einfaches Beispiel • Ausgabe des deutschen Wochentags zu einem Datum • Schritt 1: durchsuchen der FileMaker Funktionen aus dem Bereich "Datum" • Schritt 2: durchsuchen der FileMaker Funktionen aus dem Bereich "Logik", um einen geeigneten Logarithmus zu ersinnen • Kombination der ausgesuchten Funktionen zu einer eigenen "Custom Function" mit dem Namen "Wochentag" und einem Parameter "datum" • Wochentag ( datum )
  • 29.
    FileMaker Konferenz |Hamburg | 22.-24. Juni 2022 Custom Functions für Einsteiger – Thomas Hirt ein ganz einfaches Beispiel
  • 30.
    FileMaker Konferenz |Hamburg | 22.-24. Juni 2022 Custom Functions für Einsteiger – Thomas Hirt ein ganz einfaches Beispiel • DayOfWeek ( date ) • liefert als Antwort die Zahl 1 für einen Sonntag, 2 für einen Montag, etc. • DayOfWeek ( Date ( 6 ; 18 ; 2020 ) ) • FileMaker erledigt für uns also bereits die eigentliche Berechnung des Wochentags. Wir müssen nur noch die Zahlen der deutschen Bezeichnung zuordnen.
  • 31.
    FileMaker Konferenz |Hamburg | 22.-24. Juni 2022 Custom Functions für Einsteiger – Thomas Hirt ein ganz einfaches Beispiel
  • 32.
    FileMaker Konferenz |Hamburg | 22.-24. Juni 2022 Custom Functions für Einsteiger – Thomas Hirt ein ganz einfaches Beispiel
  • 33.
    FileMaker Konferenz |Hamburg | 22.-24. Juni 2022 Custom Functions für Einsteiger – Thomas Hirt ein ganz einfaches Beispiel
  • 34.
    FileMaker Konferenz |Hamburg | 22.-24. Juni 2022 Custom Functions für Einsteiger – Thomas Hirt ein ganz einfaches Beispiel
  • 35.
    FileMaker Konferenz |Hamburg | 22.-24. Juni 2022 Custom Functions für Einsteiger – Thomas Hirt ein ganz einfaches Beispiel
  • 36.
    FileMaker Konferenz |Hamburg | 22.-24. Juni 2022 Custom Functions für Einsteiger – Thomas Hirt ein ganz einfaches Beispiel
  • 37.
    FileMaker Konferenz |Hamburg | 22.-24. Juni 2022 Custom Functions für Einsteiger – Thomas Hirt ein ganz einfaches Beispiel
  • 38.
    FileMaker Konferenz |Hamburg | 22.-24. Juni 2022 Custom Functions für Einsteiger – Thomas Hirt ein ganz einfaches Beispiel • Choose ( test ; result0 {; result1 ; result2…} ) • eine Berechnung ("test") muss natürliche Zahlen beginnend mit 0 ausgeben • nach der Berechnung werden der Reihe nach die Werte aufgezählt, welche den Ergebnissen 0, 1, 2, usw. zugeordnet werden • Wir können die Funktionen "Choose" und "DayOfWeek" miteinander kombinieren: Choose ( DayOfWeek ( datum ) - 1; "Sonntag"; "Montag"; "Dienstag"; "Mittwoch"; "Donnerstag"; "Freitag"; "Samstag" )
  • 39.
    FileMaker Konferenz |Hamburg | 22.-24. Juni 2022 Custom Functions für Einsteiger – Thomas Hirt ein ganz einfaches Beispiel
  • 40.
    FileMaker Konferenz |Hamburg | 22.-24. Juni 2022 Custom Functions für Einsteiger – Thomas Hirt ein ganz einfaches Beispiel
  • 41.
    FileMaker Konferenz |Hamburg | 22.-24. Juni 2022 Custom Functions für Einsteiger – Thomas Hirt ein ganz einfaches Beispiel
  • 42.
    FileMaker Konferenz |Hamburg | 22.-24. Juni 2022 Custom Functions für Einsteiger – Thomas Hirt ein ganz einfaches Beispiel
  • 43.
    FileMaker Konferenz |Hamburg | 22.-24. Juni 2022 Custom Functions für Einsteiger – Thomas Hirt ein ganz einfaches Beispiel
  • 44.
    FileMaker Konferenz |Hamburg | 22.-24. Juni 2022 Custom Functions für Einsteiger – Thomas Hirt ein ganz einfaches Beispiel
  • 45.
    FileMaker Konferenz |Hamburg | 22.-24. Juni 2022 Custom Functions für Einsteiger – Thomas Hirt ein ganz einfaches Beispiel
  • 46.
    FileMaker Konferenz |Hamburg | 22.-24. Juni 2022 Custom Functions für Einsteiger – Thomas Hirt ein ganz einfaches Beispiel
  • 47.
    FileMaker Konferenz |Hamburg | 22.-24. Juni 2022 Custom Functions für Einsteiger – Thomas Hirt ein ganz einfaches Beispiel
  • 48.
    FileMaker Konferenz |Hamburg | 22.-24. Juni 2022 Custom Functions für Einsteiger – Thomas Hirt Eigenschaften von Custom Functions
  • 49.
    FileMaker Konferenz |Hamburg | 22.-24. Juni 2022 Custom Functions für Einsteiger – Thomas Hirt Eigenschaften von Custom Functions • begrenzt im Umfang • Name ≤ 100 Zeichen • max. 30’000 Zeichen • verschachtelte Aufrufe limitiert • max. 50’000 Schleifendurchläufe • max. 50’000 rekursive Aufrufe • max. Verschachtelung gleichzeitig aktiver Aufrufe: 10’000 • Verschachtelungstiefe auf eigenes Risiko mit SetRecursion () änderbar • Limitationen im Prinzip identisch zu Berechnungen • Debugging von Hand im Data Viewer, keine Unterstützung durch Debugger • in andere Lösungen importierbar, Reihenfolge bei Import kritisch
  • 50.
    FileMaker Konferenz |Hamburg | 22.-24. Juni 2022 Custom Functions für Einsteiger – Thomas Hirt Wie erstellt man Custom Functions? Teil 2
  • 51.
    FileMaker Konferenz |Hamburg | 22.-24. Juni 2022 Custom Functions für Einsteiger – Thomas Hirt wichtige Strukturbausteine Let ( [ wert1 = meineBerechnung1; wert2 = meineBerechnung2; wert3 = meineBerechnung1; ... wertN = meineBerechnungN ]; berechnungRückgabewert )
  • 52.
    FileMaker Konferenz |Hamburg | 22.-24. Juni 2022 Custom Functions für Einsteiger – Thomas Hirt wichtige Strukturbausteine If ( bedingung = wert; berechnungRückgabewert1; berechnungRückgabewert2 ) Case ( bedingung1 = wert1; berechnungRückgabewert1; bedingung2 = wert2; berechnungRückgabewert2; ... bedingungN = wertN; berechnungRückgabewertN; berechnungRückgabewertUniversell )
  • 53.
    FileMaker Konferenz |Hamburg | 22.-24. Juni 2022 Custom Functions für Einsteiger – Thomas Hirt wichtige Strukturbausteine While ( [ startVariable1 = wert1; startVariable1 = wert1; ... startVariableN = wertN ]; bedingung; [ schleifenVariable1 = berechnung1; schleifenVariable2 = berechnung2; ... schleifenVariableN = berechnungN ]; berechnungRückgabewert )
  • 54.
    FileMaker Konferenz |Hamburg | 22.-24. Juni 2022 Custom Functions für Einsteiger – Thomas Hirt wichtige Strukturbausteine Evaluate ( ) Text, welcher zur Laufzeit (z.B. mittels Variablen) zusammengebaut wird und danach als Berechnung interpretiert wird
  • 55.
    FileMaker Konferenz |Hamburg | 22.-24. Juni 2022 Custom Functions für Einsteiger – Thomas Hirt wichtige Strukturbausteine Die Strukturelemente "Let", "If", "Case", "While" und "Evaluate" lassen sich beliebig kombinieren und ineinander verschachteln, so dass auch sehr komplexe Berechnungen abgebildet werden können.
  • 56.
    FileMaker Konferenz |Hamburg | 22.-24. Juni 2022 Custom Functions für Einsteiger – Thomas Hirt wichtige Strukturbausteine Let ( [ wert1 = If ( bedingung = wert; berechnungRückgabewert1; berechnungRückgabewert2 ); wert2 = meineBerechnung2; wert3 = Evaluate ( XXXXXXXXXXXXXXXXXXXXXX ); wert4 = 123... ]; Case ( bedingungX = wertX; berechnungRückgabewertX; bedingungY = wertY; berechnungRückgabewertY; berechnungRückgabewertUniversell ) )
  • 57.
    FileMaker Konferenz |Hamburg | 22.-24. Juni 2022 Custom Functions für Einsteiger – Thomas Hirt Beispiel 1: Alter • Beim erstellen von Custom Function Bibliotheken ist es sinnvoll, die Funktionen thematisch zu gliedern. Der erste Teil des Funktionsnamens ("time.") hat diesen Zweck. • Es wird ein Parameter dateOfBirth übergeben. Es ist wichtig zu überprüfen, ob dieser Parameter ein geeignetes Format hat. time.age ( dateOfBirth )
  • 58.
    FileMaker Konferenz |Hamburg | 22.-24. Juni 2022 Custom Functions für Einsteiger – Thomas Hirt Beispiel 1: Alter • Lösungsidee: • Näherungsweise kann das Alter berechnet werden, indem man von der aktuell gültigen Jahreszahl das Jahr des Geburtstages abzieht. • Es muss zusätzlich berücksichtigt werden, ob der Geburtstag im aktuellen Jahr schon vorbei ist oder nicht. time.age ( dateOfBirth ) Jahr Geburtstag aktuelles Jahr - Geburtsjahr aktuelles Jahr - Geburtsjahr - 1
  • 59.
    FileMaker Konferenz |Hamburg | 22.-24. Juni 2022 Custom Functions für Einsteiger – Thomas Hirt Beispiel 1: Alter Einfache Methode, um sicherzustellen, dass der übergebene Parameter das richtige Format hat. Let ( [ // aktuelles Datum _today = Get ( CurrentDate ); _todayY = Year ( _today ); _todayM = Month ( _today ); _todayD = Day ( _today ); // Geburtstag _birthday = GetAsDate ( dateOfBirth ); _birthdayY = Year ( _birthday ); _birthdayM = Month ( _birthday ); _birthdayD = Day ( _birthday ); // Geburtstag dieses Jahr schon vorbei? _birthdayPast = Case ( _todayM > _birthdayM; 1; ( _todayM = _birthdayM ) and ( _todayD ≥ _birthdayD ); 1; 0 ) ]; // Altersberechnung If ( _birthdayPast; _todayY - _birthdayY; _todayY - _birthdayY - 1 ) )
  • 60.
    FileMaker Konferenz |Hamburg | 22.-24. Juni 2022 Custom Functions für Einsteiger – Thomas Hirt Ausgangsdaten Beispiel 2: Seitenzahlen Ziel • gegeben sei eine Liste von Seitenzahlen in aufsteigender Reihenfolge • Die Seitenzahlen werden durch Absatzmarken getrennt, d.h. pro Zeile findet sich eine Seitenzahl. • Die Liste der Seitenzahlen soll auf einer Zeile dargestellt werden. • Die Seitenzahlen sollen durch Kommas und Abstand voneinander getrennt werden. • Aufeinanderfolgende Seitenzahlen sollen als Serie xx-yy dargestellt werden, um die Liste zu verkürzen.
  • 61.
    FileMaker Konferenz |Hamburg | 22.-24. Juni 2022 Custom Functions für Einsteiger – Thomas Hirt Ausgangsdaten Beispiel 2: Seitenzahlen Ziel 5 9 22 23 24 25 51 67 103 104 5, 9, 22-25, 51, 67, 103-104
  • 62.
    FileMaker Konferenz |Hamburg | 22.-24. Juni 2022 Custom Functions für Einsteiger – Thomas Hirt Beispiel 2: Seitenzahlen numbers.list.shorten ( listOfNumbers ) While ( [ _shortenedList = ""; _remainingList = listOfNumbers; _lastNumber = 0; _lastNumberWasInSeries = 0 ]; not IsEmpty ( _remainingList ); [ // nächste Zahl in Ausgangsliste merken // Zahl an verkürzte Liste anhängen // Ausgangsliste um 1 Zahl verkürzen ]; _shortenedList )
  • 63.
    FileMaker Konferenz |Hamburg | 22.-24. Juni 2022 Custom Functions für Einsteiger – Thomas Hirt Beispiel 2: Seitenzahlen _remainingNumberCount = ValueCount ( _remainingList ); _currentNumber = GetValue ( _remainingList; 1 ); _currentNumberIsInSeries = If ( _currentNumber - 1 = _lastNumber; 1; 0 ); _shortenedList = Case ( IsEmpty ( _shortenedList ); _currentNumber; _currentNumberIsInSeries and _remainingNumberCount = 1; _shortenedList & "-" & _currentNumber; _currentNumberIsInSeries; _shortenedList; _lastNumberWasInSeries; _shortenedList & "-" & _lastNumber & ", " & _currentNumber; _shortenedList & ", " & _currentNumber ); _lastNumber = _currentNumber; _lastNumberWasInSeries = If ( _currentNumberIsInSeries; 1; 0 ); _remainingList = RightValues ( _remainingList; _remainingNumberCount-1 )
  • 64.
    FileMaker Konferenz |Hamburg | 22.-24. Juni 2022 Custom Functions für Einsteiger – Thomas Hirt While ( [ _shortenedList = ""; _remainingList = listOfNumbers; _lastNumber = 0; _lastNumberWasInSeries = 0 ]; not IsEmpty ( _remainingList ); [ _remainingNumberCount = ValueCount ( _remainingList ); _currentNumber = GetValue ( _remainingList ; 1 ); _currentNumberIsInSeries = If ( _currentNumber - 1 = _lastNumber ; 1 ; 0 ); _shortenedList = Case ( // This is the 1st iteration. IsEmpty ( _shortenedList ); _currentNumber; // The current number belongs to an active series of neighbouring numbers. // The current number is the last number in the list. _currentNumberIsInSeries and _remainingNumberCount = 1; _shortenedList & "-" & _currentNumber; // The current number belongs to an active series of neighbouring numbers. _currentNumberIsInSeries; _shortenedList; // The current number does not belong to an active series of neighbouring numbers // but the last number did. Hence, the last number terminates a series. _lastNumberWasInSeries; _shortenedList & "-" & _lastNumber & ", " & _currentNumber; // Neither the last nor the current number belongs to a series of neighbouring numbers. // We can simply add the current number. _shortenedList & ", " & _currentNumber ); _lastNumber = _currentNumber; _lastNumberWasInSeries = If ( _currentNumberIsInSeries ; 1 ; 0 ); _remainingList = RightValues ( _remainingList ; _remainingNumberCount - 1 ) ]; _shortenedList ) Beispiel 2: Seitenzahlen
  • 65.
    FileMaker Konferenz |Hamburg | 22.-24. Juni 2022 Custom Functions für Einsteiger – Thomas Hirt Wann sind Custom Functions sinnvoll?
  • 66.
    FileMaker Konferenz |Hamburg | 22.-24. Juni 2022 Custom Functions für Einsteiger – Thomas Hirt eher sinnvoll Wann sind Custom Functions sinnvoll? eher nicht sinnvoll • wiederverwenbar • klar umrissene Funktion • wenige bis gar keine Abhängigkeiten • nicht allzu umfangreich und lang • Fälle zum Testen gut erstellbar, Testaufwand überschaubar (Stichwort: "Unit Tests") • einmalige Verwendung • Abhängigkeiten zwingend gegeben • komplex oder sehr komplex • Funktionalität nicht nachvollziehbar (Stichtwort: "Black Box") • Testaufwand gross bis sehr gross
  • 67.
    FileMaker Konferenz |Hamburg | 22.-24. Juni 2022 Custom Functions für Einsteiger – Thomas Hirt Custom Functions Wann sind Custom Functions sinnvoll? FileMaker Skripten • klar umrissene Funktionen • wenige bis gar keine Abhängigkeiten • nicht allzu umfangreich und komplex • FileMaker Funktionen als Basis • Kommentare im Code zwar möglich, aber nicht wirklich vorgesehen • Testing von Hand im Data Viewer • alle Arten von Algorithmen • mit oder ohne Abhängigkeiten • ganz simpel bis sehr komplex • FileMaker Skriptschritte und FileMaker Funktionen als Basis • umfangreiche Kommentare im Code problemlos möglich • Testing mit Hilfe des Debuggers
  • 68.
    FileMaker Konferenz |Hamburg | 22.-24. Juni 2022 Custom Functions für Einsteiger – Thomas Hirt Q & R Vielen Dank für Ihr Interesse!
  • 69.
    FileMaker Konferenz |Hamburg | 22.-24. Juni 2022 Custom Functions für Einsteiger – Thomas Hirt Links auf Tools • Custom Function Sammlungen • https://www.briandunning.com/filemaker-custom-functions/ • https://github.com/chivalry/filemaker-custom-functions • https://github.com/jbante/FileMaker- Techniques/tree/master/CustomFunctions • kostenlose Text-Editoren für Entwickler • https://notepad-plus-plus.org/ (Windows) • https://code.visualstudio.com/ (Win, macOS, Linux) Plugin für FileMaker Code Highlighting verfügbar
  • 70.
    FileMaker Konferenz |Hamburg | 22.-24. Juni 2022 Custom Functions für Einsteiger – Thomas Hirt Vielen Dank unseren Sponsoren