Meine besten Custom Functions - FileMaker Konferenz...FileMaker Konferenz 2012 Salzburg...

17
FileMaker Konferenz 2012 Salzburg www.filemaker-konferenz.com Dipl.-Ing. Arnold Kegebein Meine besten Custom Functions Meine besten Custom Functions Eigene Funktionen für die FileMaker Datenbank

Transcript of Meine besten Custom Functions - FileMaker Konferenz...FileMaker Konferenz 2012 Salzburg...

  • FileMaker Konferenz 2012 Salzburgwww.filemaker-konferenz.com

    Dipl.-Ing. Arnold KegebeinMeine besten Custom Functions

    Meine besten Custom Functions

    Eigene Funktionen für die FileMaker Datenbank

    http://www.filemaker-konferenz.comhttp://www.filemaker-konferenz.com

  • FileMaker Konferenz 2012 Salzburgwww.filemaker-konferenz.com

    Dipl.-Ing. Arnold KegebeinMeine besten Custom Functions

    • Diplom-Ingenieur der Technischen Informatik• 6½ Jahre in den USA als IT Manager• Seit 2006 Entwicklung mit FileMaker• 25 Jahre Datenbankerfahrungen: Access, Oracle, MySQL, u. a.• Hohe Aufmerksamkeit auf Usability und Design• Regelmäßiger Autor im FileMaker Magazin

    Zu meiner Person

    http://www.filemaker-konferenz.comhttp://www.filemaker-konferenz.com

  • FileMaker Konferenz 2012 Salzburgwww.filemaker-konferenz.com

    Dipl.-Ing. Arnold KegebeinMeine besten Custom Functions

    Meine einfachste Funktion

    • Platzhalter für „optionale“ FunktionsparameterFormatBetrag( Rech::Summe; _ )

    • Vereinfachung mit Funktion Berechne und ähnlicheBerechne( "If( Tab::F1=\"\"; \"NA\"; Tab::F1 )" )

    Berechne( "If( Tab::F1=_; \"NA\"; Tab::F1 )" )

    _( )

    http://www.filemaker-konferenz.comhttp://www.filemaker-konferenz.com

  • FileMaker Konferenz 2012 Salzburgwww.filemaker-konferenz.com

    Dipl.-Ing. Arnold KegebeinMeine besten Custom Functions

    Null Value Funktion: NVNV( _value; _null )

    If( IsEmpty( _value );! _null;// Else! _value)

    • NV = Null Value• Lücken in Listen auffüllen

    NV( RePos::Betrag; "0,00" )

    • Standardwerte für „optionale“ Parameter

    http://www.filemaker-konferenz.comhttp://www.filemaker-konferenz.com

  • FileMaker Konferenz 2012 Salzburgwww.filemaker-konferenz.com

    Dipl.-Ing. Arnold KegebeinMeine besten Custom Functions

    Null Value Funktion: NNVNNV( _value; _notNull )

    If( IsEmpty( _value );! "";// Else! Substitute( _notNull; ! ! [ "\@"; "¨AT¨" ];! ! [ "@"; _value ];! ! [ "¨AT¨"; "@" ]! ))

    • NNV = Not Null Value• Textfelder verbinden

    NNV( Adr::Vorname; "@. " ) & Adr::Nachname

    http://www.filemaker-konferenz.comhttp://www.filemaker-konferenz.com

  • FileMaker Konferenz 2012 Salzburgwww.filemaker-konferenz.com

    Dipl.-Ing. Arnold KegebeinMeine besten Custom Functions

    Null Value Funktion: NNNNNN( _value; _null; _notNull )

    If( IsEmpty( _value );! _null;// Else! Substitute( _notNull; ! ! [ "\@"; "¨AT¨" ];! ! [ "@"; _value ];! ! [ "¨AT¨"; "@" ]! ))

    • NNN = Null Not Null• Felder formatieren

    NNN( $startDate; "sofort"; "ab @" )

    http://www.filemaker-konferenz.comhttp://www.filemaker-konferenz.com

  • FileMaker Konferenz 2012 Salzburgwww.filemaker-konferenz.com

    Dipl.-Ing. Arnold KegebeinMeine besten Custom Functions

    Textfunktion TrimMoreTrimMore( _text; _trim )

    Let( [! _trim = NV( _trim; " ⇥¶" );! _len = Length( _text );! _l = Position( _trim; Left( _text; 1 ); 1; 1 ) > 0;! _r = Position( _trim; Right( _text; 1 ); 1; 1 ) > 0;! _text = Middle( _text; 1 + _l; _len - _l - _r )];! If( _l or _r;! ! TrimMore( _text; _trim );! // Else! ! _text! )!)

    • Texte bereinigenTrimMore( " ¶ ab c¶ ⇥¶¶ "; _ ) ! "ab c"

    http://www.filemaker-konferenz.comhttp://www.filemaker-konferenz.com

  • FileMaker Konferenz 2012 Salzburgwww.filemaker-konferenz.com

    Dipl.-Ing. Arnold KegebeinMeine besten Custom Functions

    CFs für die Listenbearbeitung• ListHasValue( list; value )! Prüfen, ob ein Wert in der Liste vorkommt• ListIndex( list; value )! ! Position eines Wertes in der Liste• ListRemove( list; value )!! Einen Wert und seine Wdhl. aus der Liste entfernen• ListUnique( list )! ! ! Entfernt Duplikate aus der Liste• ListSort( list )! ! ! ! Liste sortieren (erfordert ListMerge)• ListMerge( list1; list2 )!! Zwei Listen alphabetisch zusammenführen

    http://www.filemaker-konferenz.comhttp://www.filemaker-konferenz.com

  • FileMaker Konferenz 2012 Salzburgwww.filemaker-konferenz.com

    Dipl.-Ing. Arnold KegebeinMeine besten Custom Functions

    FrontTabs• Ermittelt eine Liste mit den Objektnamen der aktiven Tabs• Kann zur Wiederherstellung der zuletzt geöffneten Tabs

    verwendet werden

    ‣ OnLayoutExit: FrontTabs in globaler Variablen speichern‣ OnLayoutEnter: Variable auslesen und Objekte nacheinander

    anspringen.

    http://www.filemaker-konferenz.comhttp://www.filemaker-konferenz.com

  • FileMaker Konferenz 2012 Salzburgwww.filemaker-konferenz.com

    Dipl.-Ing. Arnold KegebeinMeine besten Custom Functions

    LayoutIDLayoutID( )

    GetValue( ! LayoutIDs( Get( FileName ) ); ! Get( LayoutNumber ) )

    • Gibt die interne FileMaker ID für das aktuelle Layout zurück• Hilfreich für robustere Datenbankentwicklung‣ Layouts können umbenannt werden‣ Layouts können in der Reihenfolge verschoben werden

    http://www.filemaker-konferenz.comhttp://www.filemaker-konferenz.com

  • FileMaker Konferenz 2012 Salzburgwww.filemaker-konferenz.com

    Dipl.-Ing. Arnold KegebeinMeine besten Custom Functions

    LayoutNoLayoutNo( _id )

    Let( [! _list = ¶ & LayoutIDs( Get( FileName ) ) & ¶];! PatternCount( Left( _list; ! ! Position( _list; ¶ & _id & ¶; 1; 1 ) ! ); ¶ ))

    • Gibt die Layoutnummer anhand der Layout ID zurück• Verwendung im Script-Befehl:

    Gehe zu Layout [LayoutNr]

    • »Gegenstück« zur Funktion LayoutID

    http://www.filemaker-konferenz.comhttp://www.filemaker-konferenz.com

  • FileMaker Konferenz 2012 Salzburgwww.filemaker-konferenz.com

    Dipl.-Ing. Arnold KegebeinMeine besten Custom Functions

    GetAsColor• Meine erste große, komplexe Funktion mit Rekursion• Rechnet Farbwerte in dezimale oder hexadezimale Werte um• Vielfältige Eingabeformate:‣ Dezimal- oder Hexadezimalwerte‣ Triplets für die RGB-Anteile:

    Als Dezimal-, Hexadezimal- oder Prozentwerte

    • Drei verschiedene Ausgabeformate:‣ Dezimal- oder Hexadezimalwert‣ Hexadezimalwert mit vorangestelltem Hash (#)

    http://www.filemaker-konferenz.comhttp://www.filemaker-konferenz.com

  • FileMaker Konferenz 2012 Salzburgwww.filemaker-konferenz.com

    Dipl.-Ing. Arnold KegebeinMeine besten Custom Functions

    CFs für Parameter Variablen• #( _key; _value )! ! Benannte Parameter (param) erzeugen

    • #Get( _key; _params )! ! Wert eines Parameters aus Parameterliste holen• #Checked( )!! ! ! ! Zuweisung und Prüfung der Script Parameter

    • #Assign( _params )!! ! Parameterwerte lokalen Variablen zuweisen• VarCheck( _paramDef )! Prüfen, ob bestimmte lokale Variablen existieren• TextBetween( _text; _start; _end; _type ) Text zwischen bestimmten Zeichen

    • #List( _vars )! ! ! ! Nennt die Namen aller Parameter in der Liste• #Delete( _key; _params )! Entfernt einen Parameter aus der Parameterliste• ClearVars( _vars )! ! ! Löscht alle genannten lokale und globale Variablen

    http://www.filemaker-konferenz.comhttp://www.filemaker-konferenz.com

  • FileMaker Konferenz 2012 Salzburgwww.filemaker-konferenz.com

    Dipl.-Ing. Arnold KegebeinMeine besten Custom Functions

    Parameter Variablen• Benannte Parameter:

    #( "Name"; "Arnold" ) ! "Name==Arnold¶"

    • Mehrere Parameter werden wie Texte verknüpft: &• Parameterwert kann beliebige Zeichen einschließlich ¶ enthalten• Kaskadierende Definition ist möglich:

    #( "A"; #("B1"; 1) & #("B2"; 2) )

    • Beibehaltung von Textformatierungen• Ideal für Script Parameter

    http://www.filemaker-konferenz.comhttp://www.filemaker-konferenz.com

  • FileMaker Konferenz 2012 Salzburgwww.filemaker-konferenz.com

    Dipl.-Ing. Arnold KegebeinMeine besten Custom Functions

    ListFunction• Erstellt Listen, auf vielfältige Art• Basiert auf einer Funktion von Agnés Barouh• Im FileMaker Magazin 2010-04 ausführlich beschrieben

    http://www.filemaker-konferenz.comhttp://www.filemaker-konferenz.com

  • FileMaker Konferenz 2012 Salzburgwww.filemaker-konferenz.com

    Dipl.-Ing. Arnold KegebeinMeine besten Custom Functions

    Vielen Dank für Ihre Aufmerksamkeit

    http://www.filemaker-konferenz.comhttp://www.filemaker-konferenz.com

  • FileMaker Konferenz 2012 Salzburgwww.filemaker-konferenz.com

    Dipl.-Ing. Arnold KegebeinMeine besten Custom Functions

    Vielen Dank unseren Sponsoren

    Danke für das Bewerten dieses Vortrages

    http://www.filemaker-konferenz.comhttp://www.filemaker-konferenz.comhttp://http.//www.filemaker-magazin.dehttp://http.//www.filemaker-magazin.dehttp://http.//www.filemaker-magazin.dehttp://http.//www.filemaker-magazin.dehttp://http.//www.filemaker-magazin.dehttp://http.//www.filemaker-magazin.dehttp://http.//www.filemaker-magazin.dehttp://http.//www.filemaker-magazin.dehttp://http.//www.filemaker-magazin.dehttp://http.//www.filemaker-magazin.dehttp://http.//www.filemaker-magazin.dehttp://http.//www.filemaker-magazin.dehttp://http.//www.filemaker-magazin.dehttp://http.//www.filemaker-magazin.dehttp://http.//www.filemaker-magazin.dehttp://http.//www.filemaker-magazin.dehttp://http.//www.filemaker-magazin.dehttp://http.//www.filemaker-magazin.dehttp://http.//www.filemaker-magazin.dehttp://www.ingeno.ch/http://www.ingeno.ch/http://www.ingeno.ch/http://www.ingeno.ch/http://www.ingeno.ch/http://www.ingeno.ch/http://www.ingeno.ch/http://www.ingeno.ch/http://www.ingeno.ch/http://www.ingeno.ch/http://www.ingeno.ch/http://www.ingeno.ch/http://www.ingeno.ch/http://www.ingeno.ch/http://www.ingeno.ch/http://www.ingeno.ch/http://www.ingeno.ch/http://www.ingeno.ch/http://www.ingeno.ch/http://www.herrfriedrich.com/http://www.herrfriedrich.com/http://www.herrfriedrich.com/http://www.herrfriedrich.com/http://www.herrfriedrich.com/http://www.herrfriedrich.com/http://www.herrfriedrich.com/http://www.herrfriedrich.com/http://www.herrfriedrich.com/http://www.herrfriedrich.com/http://www.herrfriedrich.com/http://www.herrfriedrich.com/http://www.herrfriedrich.com/http://www.herrfriedrich.com/http://www.herrfriedrich.com/http://www.herrfriedrich.com/http://www.herrfriedrich.com/http://www.herrfriedrich.com/http://www.herrfriedrich.com/http://www.guenther-bs.de/http://www.guenther-bs.de/http://www.guenther-bs.de/http://www.guenther-bs.de/http://www.guenther-bs.de/http://www.guenther-bs.de/http://www.guenther-bs.de/http://www.guenther-bs.de/http://www.guenther-bs.de/http://www.guenther-bs.de/http://www.guenther-bs.de/http://www.guenther-bs.de/http://www.guenther-bs.de/http://www.guenther-bs.de/http://www.guenther-bs.de/http://www.guenther-bs.de/http://www.guenther-bs.de/http://www.guenther-bs.de/http://www.guenther-bs.de/http://www.monkeybreadsoftware.de/http://www.monkeybreadsoftware.de/http://www.monkeybreadsoftware.de/http://www.monkeybreadsoftware.de/http://www.monkeybreadsoftware.de/http://www.monkeybreadsoftware.de/http://www.monkeybreadsoftware.de/http://www.monkeybreadsoftware.de/http://www.monkeybreadsoftware.de/http://www.monkeybreadsoftware.de/http://www.monkeybreadsoftware.de/http://www.monkeybreadsoftware.de/http://www.monkeybreadsoftware.de/http://www.monkeybreadsoftware.de/http://www.monkeybreadsoftware.de/http://www.monkeybreadsoftware.de/http://www.monkeybreadsoftware.de/http://www.monkeybreadsoftware.de/http://www.monkeybreadsoftware.de/http://www.filemaker.dehttp://www.filemaker.dehttp://www.filemaker.dehttp://www.filemaker.dehttp://www.filemaker.dehttp://www.filemaker.dehttp://www.filemaker.dehttp://www.filemaker.dehttp://www.filemaker.dehttp://www.filemaker.dehttp://www.filemaker.dehttp://www.filemaker.dehttp://www.filemaker.dehttp://www.filemaker.dehttp://www.filemaker.dehttp://www.filemaker.dehttp://www.filemaker.dehttp://www.filemaker.dehttp://www.filemaker.dehttp://www.tao-solutions.de/http://www.tao-solutions.de/http://www.tao-solutions.de/http://www.tao-solutions.de/http://www.tao-solutions.de/http://www.tao-solutions.de/http://www.tao-solutions.de/http://www.tao-solutions.de/http://www.tao-solutions.de/http://www.tao-solutions.de/http://www.tao-solutions.de/http://www.tao-solutions.de/http://www.tao-solutions.de/http://www.tao-solutions.de/http://www.tao-solutions.de/http://www.tao-solutions.de/http://www.tao-solutions.de/http://www.tao-solutions.de/http://www.tao-solutions.de/http://www.klemenso.dehttp://www.klemenso.dehttp://www.klemenso.dehttp://www.klemenso.dehttp://www.klemenso.dehttp://www.klemenso.dehttp://www.klemenso.dehttp://www.klemenso.dehttp://www.klemenso.dehttp://www.klemenso.dehttp://www.klemenso.dehttp://www.klemenso.dehttp://www.klemenso.dehttp://www.klemenso.dehttp://www.klemenso.dehttp://www.klemenso.dehttp://www.klemenso.dehttp://www.klemenso.dehttp://www.klemenso.dehttp://www.myfmbutler.comhttp://www.myfmbutler.comhttp://www.myfmbutler.comhttp://www.myfmbutler.comhttp://www.myfmbutler.comhttp://www.myfmbutler.comhttp://www.myfmbutler.comhttp://www.myfmbutler.comhttp://www.myfmbutler.comhttp://www.myfmbutler.comhttp://www.myfmbutler.comhttp://www.myfmbutler.comhttp://www.myfmbutler.comhttp://www.myfmbutler.comhttp://www.myfmbutler.comhttp://www.myfmbutler.comhttp://www.myfmbutler.comhttp://www.myfmbutler.comhttp://www.myfmbutler.comhttp://medioag.chhttp://medioag.chhttp://medioag.chhttp://medioag.chhttp://medioag.chhttp://medioag.chhttp://medioag.chhttp://medioag.chhttp://medioag.chhttp://medioag.chhttp://medioag.chhttp://medioag.chhttp://medioag.chhttp://medioag.chhttp://medioag.chhttp://medioag.chhttp://medioag.chhttp://medioag.chhttp://medioag.ch