Es gibt verschiedene Möglichkeiten, wie der FileMaker Entwickler bei einem Skriptaufruf gleich mehrere verschiedene Parameter an ein Skript übergeben kann.
Unsere bevorzugte Methode ist die Übergabe per Custom Function. Auch CustomFunctions gibt es verschiedene (siehe CustomFunctions bei Brian Dunning). Unsere Lösung besteht aus 2 CustomFunctions, die die Werte nach Werteschlüssel pKey und dazugehörigem Wert pValue in einer per Zeilenumbruch formatierten Liste übergeben:
Diese CustomFunction wird beim Aufruf eines Skriptes im Bereich für die optionalen Skriptparameter angegeben:
Name: _sp
Parameter:
pKey
pValueFunktion:
Trim ( Substitute ( pKey; [ ¶ ; "" ] ; [ "=" ; "" ] ) ) & "=" & Quote ( pValue) & ¶
Beispiel:
Der Klick auf einen Button führt das Skript "100 Skriptparameter als Text übergeben" aus. Der optionale Skriptparameter ist
_sp ( "Programm" ; "FileMaker" ) & _sp ( "Person1" ; "Entwickler" ) & _sp ( "Person2" ; "Developer" )
Wenn man sich im DataViewer den SkriptParameter mit Get ( ScriptParameter ) anzeigen lässt, sieht man, dass es sich um eine Liste von Werten handelt:
Programm="FileMaker"
Person1="Entwickler"
Person2="Developer"
Die Liste könnte beliebig lang sein.
Diese CustomFunction dient dem gezielten Abfragen eines bestimmten Schlüssels. Es ist eine rekursive Funktion, die sich selbst so lange aufruft, bis entweder eine "Zeile" gefunden wird, die den angegeben Schlüssel enthält, oder die Liste ohne Ergebnis durchsucht wurde.
Name: _gpParameter:
ppList
ppKeyCode:
Case ( IsEmpty ( ppList ) ; "" ;
Let ( [
ppKey = Trim ( Substitute ( ppKey ; [ ¶ ; "" ] ; [ "=" ; "" ] ) ) ;
~first = GetValue ( ppList ; 1 ) ;
~tz = Position ( ~first; "=" ; 1 ; 1 ) ;
~Key1 = Trim ( Left ( ~first; ~tz - 1 ) ) ;
~Value1 = Right ( ~first ; Length ( ~first) - ~tz ) ;
~rest = RightValues ( ppList ; ValueCount ( ppList) - 1 ) ] ;Case ( ~Key1 = ppKey; Evaluate ( ~Value1 ) ; _gp ( ~rest ; ppKey ) )
) )
Beispiel:
_gp (Get ( ScriptParameter ); "Programm") & " " & _gp (Get ( ScriptParameter ); "Person1")
ergibt den Text FileMaker Entwickler
_gp (Get ( ScriptParameter ); "Programm") & " " & _gp (Get ( ScriptParameter ); "Person2")
ergibt den Text FileMaker Developer
Die Übergabe der Parameter mit diesen CustomFunctions bietet folgende Vorteile:
Ein Parameter kann mit einem neuen Wert "überschrieben" werden. Die CustomFunction _sp überschreibt aber nicht den Parameter selbst, sondern setzt den neuen Wert VOR den alten.
Beispiel:
Ein Skript erhält die folgenden Skriptparameter:
_sp ( "Programm" ; "FileMaker" ) & _sp ( "Person1" ; "Entwickler" )
Die Liste von Werten enthält zu diesem Zeitpunkt:
Programm="FileMaker"
Person1="Entwickler"
Die Abfrage
_gp (Get ( ScriptParameter ); "Programm") & " " & _gp (Get ( ScriptParameter ); "Person1")
ergibt den Text FileMaker Entwickler
Nehmen wir an, das "Skript 100"ruft das nächste "Skript 200" auf, und es sollen folgende Parameter übergeben werden:
Der Skriptaufruf wäre PerformScript "Skript 200" und als "optionale Parameter" würde folgender String übergeben werden:
_sp ( "Person1" ; "Developer" ) & Get ( ScriptParameter )
Wichtig ist, dass der neue Parameter vor den alten Parametern aus "Skript 100" angegeben wird. Die Liste der Werte die Skript 200 als Parameter erhält sieht dann so aus:
Person1="Developer"
Programm="FileMaker"
Person1="Entwickler"
Wie man sieht, ist der alte Wert im Array noch vorhanden, wird aber bei der Abfrage des Wertes mit _gp nicht zurückgegeben, da die CustomFunction nur nach dem ersten Auftreten des Schlüssels sucht.
Die Abfrage
_gp (Get ( ScriptParameter ); "Programm") & " " & _gp (Get ( ScriptParameter ); "Person1")
ergibt den jetzt Text FileMaker Developer
Mamtemic GmbH:
FileMaker Entwicklung, FileMaker Programmierung, Individuelle Datenbanklösungen, Speziallösungen, Web Applications, Auswertungen & Berichte, Außendienst Steuerung, Spezial Kalkulationen, Datenkonvertierung, FileMaker Entwickler für die Anpassung und Wartung Ihrer Inhouse Datenbank
FileMaker Development in Hamburg, Deutschland und Europa, FileMaker Consulting in Norddeutschland