Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

FileMaker Konferenz 2012 Salzburg www.filemaker-konferenz.com Nicolaus Busch, N. Busch GmbH SQL-Kommandos 1 Mit SQL-Kommandos FileMaker Daten lesen - und.

Ähnliche Präsentationen


Präsentation zum Thema: "FileMaker Konferenz 2012 Salzburg www.filemaker-konferenz.com Nicolaus Busch, N. Busch GmbH SQL-Kommandos 1 Mit SQL-Kommandos FileMaker Daten lesen - und."—  Präsentation transkript:

1 FileMaker Konferenz 2012 Salzburg www.filemaker-konferenz.com Nicolaus Busch, N. Busch GmbH SQL-Kommandos 1 Mit SQL-Kommandos FileMaker Daten lesen - und schreiben Integriertes SQL in FileMaker 12 SQL mit Plugins nutzen FileMaker Konferenz2010 FileMaker Konferenz 2012 Salzburg www.filemaker-konferenz.com Nicolaus Busch, N. Busch GmbH SQL-Kommandos

2 FileMaker Konferenz 2012 Salzburg www.filemaker-konferenz.com Nicolaus Busch, N. Busch GmbH SQL-Kommandos 2 Struktur 1.Was ist SQL? 2.Konzeptionelle Unterschiede SQL-FM 3.Neu in FileMaker 12: SQL-Select 1.Aufbau einer SQL-Abfrage 2.Was geht, was geht nicht? 3.Caveat: Das macht Probleme 4.Was kann man damit anstellen? Anwendung an Beispielen 1.Vorhandensein eines Datensatzes prüfen (SELECT BY ID) 2.Einschub: Das macht Probleme 3.Einschub: Dynamische vs. statische Argumente 4.Werte aus einem Datensatz holen ohne Beziehung oder Suche (SELECT fieldnames) 5.Liste verschiedener Werte innerhalb Suchbereich holen (SELECT DISTINCT) 6. Array gruppierter Summen holen (SELECT COUNT GROUP BY) 7.Join oder: One Night Stand statt Beziehung

3 FileMaker Konferenz 2012 Salzburg www.filemaker-konferenz.com Nicolaus Busch, N. Busch GmbH SQL-Kommandos 3 Struktur 4.Mit Plugins SQL ausschöpfen 1. Plugins im Markt 2. Vorsicht bitte! 3. Erweiterte Möglichkeiten durch CREATE, UPDATE & DELETE 1. Datensatz in beliebige Tabelle einfügen (INSERT INTO) 2. Datensatz in beliebiger Tabelle aktualisieren (UPDATE … WHERE …) 3. Datensätze löschen aufgrund Bedingung (DELETE FROM … WHERE) 4. Exkurs: Erweiterte Möglichkeiten durch PHP-Programmierung (oder andere Sprache) 5.Auch hier: Umbenennungs-Probleme 5.Funktionsbibliotheken am Beispiel Smartpill 4.Den Function-Maker nutzen 5.Funktionen zur Laufzeit laden 6.Update vie URL

4 FileMaker Konferenz 2012 Salzburg www.filemaker-konferenz.com Nicolaus Busch, N. Busch GmbH SQL-Kommandos 4 Was ist SQL? SQL ist keine Datenbank SQL ist eine Sprache (Structured English Query Language) Entwickelt Anfang der 1970er Jahre bei IBM Wenige Sprachelemente zur Abfrage und Manipulation von Daten und Datenbankstruktur Von zahlreichen DBMS unterstützt (MySQL, MS SQL Server, Oracle, DB/2, FileMaker,…) Sprache im Wesentlichen unabhängig von verwendeter Engine

5 FileMaker Konferenz 2012 Salzburg www.filemaker-konferenz.com Nicolaus Busch, N. Busch GmbH SQL-Kommandos 5 Konzeptionelle Unterschiede SQL-FM FileMaker: Suche selektiert Datensätze für weitere Bearbeitung Befehle beziehen sich auf die Fundmenge SQL: Jedes Statement steht für sich Suche und Datenausgabe/Manipulation im selben Befehl Erstellen, Editieren, Löschen mit Bedingungsangabe

6 FileMaker Konferenz 2012 Salzburg www.filemaker-konferenz.com Nicolaus Busch, N. Busch GmbH SQL-Kommandos 6 Neu in FileMaker 12: SQL-Select SQL-Statements an FileMaker schicken SQLQueryAusführen( "SELECT field(s) FROM table [WHERE Bedingung ]")Allgemeine Form: SQLQueryAusführen( "SELECT field(s) FROM table [WHERE Bedingung ]") SQLQueryAusführen( "SELECT * FROM Adressen" ; "";"")Einfachstes Beispiel SQLQueryAusführen( "SELECT * FROM Adressen" ; "";"")  156231,Müller,DE,Walter,Helmut Kohl Allee 12,55116,Mainz  2312,Meier,AT,Irene,Erzherzog-Johann-Strasse 5,1172,Wien  12156,Ganter,CH,Hansueli,Bankenplatz 1,8000,Zürich  15612,Zehnder,,Rudolf,Paradeplatz 12,1100,Wien  Unsortierte Liste, Feldreihenfolge wie erstellt

7 FileMaker Konferenz 2012 Salzburg www.filemaker-konferenz.com Nicolaus Busch, N. Busch GmbH SQL-Kommandos 7 Datensatz prüfen Gibt es dich schon? IstLeer( SQLQueryAusführen( " SELECT id FROM Adressen WHERE Nachname = 'Sarasin' AND Vorname = 'Philipp' "; "" ; "" )) Ergebnis: Leer oder ID-Liste Weichere Abfrage: SQLQueryAusführen( " SELECT id FROM Adressen WHERE LOWER( Nachname ) = 'sarasin' AND LOWER( Vorname ) = 'philipp' "; "" ; "" )

8 FileMaker Konferenz 2012 Salzburg www.filemaker-konferenz.com Nicolaus Busch, N. Busch GmbH SQL-Kommandos 8 Das macht Probleme Was geht: alle Arten von Abfragen mit SELECT Was geht nicht: alle Arten von Manipulation der Daten oder der Struktur Unterstützung durch FileMaker bei Fehlern: keine gross- und KLEINschreiBunG von Argumenten Umbenennungs-Probleme _Sonderzeichen in Feldname ⇒ \" benutzen Keine SQL-Abfragen in gespeicherten Berechnungen! Kein SQL-Abfragen im Data Viewer stehen lassen!

9 FileMaker Konferenz 2012 Salzburg www.filemaker-konferenz.com Nicolaus Busch, N. Busch GmbH SQL-Kommandos 9 Dynamische vs. statische Argumente  SQLQueryAusführen( "SELECT id FROM Adressen WHERE Nachname = 'Sarasin' AND Vorname = 'Philipp' "; "" ; "" )  SQLQueryAusführen( "SELECT id FROM Adressen WHERE Nachname = '" & Adressen::Nachname & "' AND Vorname = '" & Adressen::Vorname & "' "; "" ; "" )  SQLQueryAusführen( "SELECT id FROM Adressen WHERE Nachname = ? AND Vorname = ? "; "" ; "" ; Adressen::Nachname ; Adressen::Vorname )

10 FileMaker Konferenz 2012 Salzburg www.filemaker-konferenz.com Nicolaus Busch, N. Busch GmbH SQL-Kommandos 10 Werte aus einem Datensatz holen SQLQueryAusführen( "SELECT plz, ort, land, strasse FROM Adressen WHERE NOT land = ? "; "" ; "" ; "AT" ) //end SQLQuery  55116,Mainz,DE, Helmut Kohl Allee 12  8000,Zürich,CH,Bankenplatz 1  1100,Wien,, Paradeplatz 12

11 FileMaker Konferenz 2012 Salzburg www.filemaker-konferenz.com Nicolaus Busch, N. Busch GmbH SQL-Kommandos 11 Einsatz im FileMaker-Script Beispiel: Neue Person anlegen Script ausführen[ fn.TroiDL_Input["Title =" & "Neue Person" & ¶ & "Labels =Name#Vorname " & ¶ &)" Aus Datei:“LL4_Toolbox”; (…) Variable setzen [ $Selection;Wert:HoleWert( Hole( ScriptErgebnis ) ; 1) ] Wenn [ $Selection = 1 ] Variable setzen [ $Nachname;Wert:HoleWert( Hole( ScriptErgebnis ) ; 2) ] Variable setzen [ $Vorname;Wert:HoleWert( Hole( ScriptErgebnis ) ; 3) ] Variable setzen [ $Matches;Wert:SQLQueryAusführen( "SELECT \"_pk_GUID\", \"d_Nachname_t\", \"d_Vorname_t\", \"d_Geburtsort_t\", \"d_Geburtsjahr_n\" FROM DAutor WHERE LOWER( d_Nachname_t ) = ?" & Falls( NICHT IstLeer( $Vorname) ; " AND LOWER( d_Vorname_t )= ?") & " ORDER BY d_Nachname_t, d_Vorname_t"; ", " ; "" ; Kleinbuchstaben( $Nachname ); Kleinbuchstaben( $Vorname )) ] Wenn [ NICHT IstLeer( $Matches ) ] Script ausführen[ "fn.TroiDL_SelectFromList["Text =" & _::AuswahlDatensatzOderNeu ; & "¶" & "B1 =OK ¶B2 =Neu ¶B3 =NeueSuche ¶B4 =Abbruch ¶" Aus Datei: “LL4_Toolbox”; (…) (…)

12 FileMaker Konferenz 2012 Salzburg www.filemaker-konferenz.com Nicolaus Busch, N. Busch GmbH SQL-Kommandos 12 Liste verschiedener Werte holen SQLQueryAusführen("SELECT d_AutorNachname_t, d_AutorVorname_t FROM DTitel WHERE LOWER( d_ort_t ) = ?" ; ", ";"dublin")  Connolly, James  Mitchell, Arthur  Martin, F.X.  Nowlan, Kevin B.  O'Broin, Leon  Nevin, Donal  Cronin, James  Lalor, Fintan  Nowlan, Kieran

13 FileMaker Konferenz 2012 Salzburg www.filemaker-konferenz.com Nicolaus Busch, N. Busch GmbH SQL-Kommandos 13 Liste verschiedener Werte holen II SQLQueryAusführen("SELECT DISTINCT d_AutorNachname_t, d_AutorVorname_t FROM DTitel WHERE LOWER(d_ort_t) = ? ORDER BY d_AutorNachname_t, d_AutorVorname_t" ; ", " ; "dublin")  Connolly, James  Cronin, James  Lalor, Fintan  Martin, F.X.  Mitchell, Arthur  Nevin, Donal  Nowlan, Kevin B.  Nowlan, Kieran  O'Broin, Leon

14 FileMaker Konferenz 2012 Salzburg www.filemaker-konferenz.com Nicolaus Busch, N. Busch GmbH SQL-Kommandos 14 Array gruppierter Summen holen SQLQueryAusführen( "SELECT d_Ort_t, COUNT(d_Titel_t) FROM DTitel GROUP BY d_Ort_t"; "" ; "") ,24  Dublin,1  Frankfurt,1  Frankfurt a.M,1  Frankfurt am Main,2  Hamburg,2  Stuttgart,1  Zürich,2

15 FileMaker Konferenz 2012 Salzburg www.filemaker-konferenz.com Nicolaus Busch, N. Busch GmbH SQL-Kommandos 15 Array im Script einsetzen Beispiel: Show count of distinct Values Variable setzen [$Feldname; Wert: Get( ActiveFieldName)] Variable setzen [$Tabelle; Wert: Get( LayoutTableName)] Variable setzen [$Query; Wert: "echo fm_sql_select(\"Select COUNT( DISTINCT " & $Feldname & ") FROM " & $Tabelle & "\");"] Variable setzen [$Result; Wert:PHP_Execute ($Query)] Eigenes Dialogfeld anzeigen ["Unique values of " & $Feldname; $Result]

16 FileMaker Konferenz 2012 Salzburg www.filemaker-konferenz.com Nicolaus Busch, N. Busch GmbH SQL-Kommandos 16 ExecuteSQL ("SELECT Ti.d_Titel_t, Ti.d_Ort_t, Ti.d_Datierung_t, Au.d_Nachname_t, Au.d_Vorname_t, Au.d_Geburtsort_t, Au.d_Geburtsjahr_n FROM DTitel Ti, DAutor Au WHERE Ti.d_Ort_t = ? AND Ti.\"_fk_Autor\"=Au.\"_pk_GUID\" ORDER BY Au.d_Nachname_t ASC";"";""; "Dublin") ExecuteSQL ("SELECT Ti.d_Titel_t, Ti.d_Ort_t, Ti.d_Datierung_t, Au.d_Nachname_t, Au.d_Vorname_t, Au.d_Geburtsort_t, Au.d_Geburtsjahr_n FROM DTitel Ti JOIN DAutor Au ON Ti.\"_fk_Autor\" = Au.\"_pk_GUID\" WHERE Ti.d_Ort_t = ? ORDER BY Au.d_Nachname_t ASC";"";""; "Dublin") Join oder: One Night Stand statt Beziehung

17 FileMaker Konferenz 2012 Salzburg www.filemaker-konferenz.com Nicolaus Busch, N. Busch GmbH SQL-Kommandos 17 Script mit Join #Ruft die Titel auf, bei denen Publikationsort gleich Geburtsort des Autors ist Variable setzen [ $Result ; Wert:SQLQueryAusführen ( " SELECT Ti.\"_pk_GUID\" FROM DTitel Ti JOIN DAutor Au ON Ti.\"_fk_Autor\" = Au.\"_pk_GUID\" AND Ti.\"d_Ort_t\" = Au.\"d_Geburtsort_t\" ORDER BY Au.\"d_Nachname_t\" ASC"; "";"") ] Wenn [ NICHT IstLeer( $Result ) ] Feldwert setzen [ DGlobals::v_TitelID_tg ; $Result ] Fenster fixieren Gehe zu Layout [ “DGlobals” (DGlobals) ] Gehe zu Bezugsdatensatz[ Aus Tabelle: “DGlobals.Titel” ; Mit Layout: “lst.Titel” (DTitel), Nur Bezugsdatensätze zeigen ] Ende (wenn)

18 FileMaker Konferenz 2012 Salzburg www.filemaker-konferenz.com Nicolaus Busch, N. Busch GmbH SQL-Kommandos 18 Mit Plugins SQL ausschöpfen Erweiterte Möglichkeiten durch INSERT, UPDATE & DELETE Erweiterte Möglichkeiten durch PHP-Programmierung

19 FileMaker Konferenz 2012 Salzburg www.filemaker-konferenz.com Nicolaus Busch, N. Busch GmbH SQL-Kommandos 19 Plugins im Markt 2empower FM SQL Runner www.dracoventions.com Reines SQL-Plugin, kostenlos, FM-Daten lesen in Versionen pre-12 www.dracoventions.com myFMButler DoSQL http://www.myfmbutler.com/ Lesen und schreiben in FM via SQL, unterstützt neben SELECT, INSERT, UPDATE und DELETE auch CREATE, ALTER und DROP http://www.myfmbutler.com/ Monkeybread MBS SQL Connection http://www.monkeybreadsoftware.de Unterstützt SELECT, INSERT, UPDATE und DELETE Umfangreicher Befehlssatz http://www.monkeybreadsoftware.de Scodigo Smartpill www.scodigo.com Unterstützt SELECT, INSERT, UPDATE und DELETE Stellt Umgebung für PHP zur Verfügung www.scodigo.com 360Works ScriptMaster4 www.360works.com Unterstützt SELECT, INSERT, UPDATE und DELETE Stellt Umgebung für Groovy(Java) zur Verfügung www.360works.com

20 FileMaker Konferenz 2012 Salzburg www.filemaker-konferenz.com Nicolaus Busch, N. Busch GmbH SQL-Kommandos 20 CAVEAT!  Ab hier geht es Ihren Daten an den Kragen!  Testen, testen und nochmal testen  Varianten erproben  Save often, save early fm_sql_Execute(" INSERT INTO Autor (Nachname, Vorname) VALUES ('Sarasin','Philipp')"); ") fm_sql_Execute(" UPDATE Autor SET \"ID\"='99ab23'; ")

21 FileMaker Konferenz 2012 Salzburg www.filemaker-konferenz.com Nicolaus Busch, N. Busch GmbH SQL-Kommandos 21 Datensatz einfügen (INSERT INTO) Allgemeine Form: fm_sql_Execute( \"INSERT INTO " & $Database & " (" & $Names & ") " & " VALUES (" & $Values & ")\");" Beispiel: echo fm_sql_Execute( "INSERT INTO DTitel ( _fk_Autor, _pk_GUID, d_AusgabeSeite_t, d_AutorNachname_t, d_AutorVorname_t, d_CoAutoren_t, d_Datentyp_t, d_Datentyp2_t, d_Datierung_t, d_Kurztitel_t, d_Reihe_t, d_Titel_t, s_AenderungName_t, s_AenderungZeit_ts, s_ErstellungName_t, s_ErstellungZeit_ts ) VALUES ( 'A_WFMDAABX8JWWKLAKJ.MN.120210.112303', 'HPYWWJVG5FP92U5VC.MN.120210.115013', '8-14', 'Dyk', 'Silke', 'Stephan Lessenich', 't', 'Aufsatz', '2010', 'Potentiale des Alters', 'Mittelweg 36, 19. Jg.', 'Die Potentiale des Alters und die Soziologie', 'nb', '19.02.2012 13:45:05', 'ps', '10.02.2012 11:50:13' ) ");

22 FileMaker Konferenz 2012 Salzburg www.filemaker-konferenz.com Nicolaus Busch, N. Busch GmbH SQL-Kommandos 22 Datensatz aktualisieren (UPDATE) Allgemeine Form: fm_sql_Execute( \"UPDATE " & $Database & " SET " & $NamesValues & " WHERE ID = '" & $ID & "'\");" Beispiel:: echo fm_sql_Execute( " UPDATE Titel SET \"_fk_Autor\"='A_WFMDAABX8JWWKLAKJ.MN.120210.112303', \"_fk_Bibliothek\"='25634', \"d_Titel_t\"=' Diskursanalyse meets Gouvernementalitätsforschung : Perspektiven auf das Verhältnis von Subjekt, Sprache, Macht und Wissen', (…) \"s_ZoteroKey_t\"='17F2YA89', WHERE _pk_GUID = 'HPYWWJVG5FP92U5VC.MN.120210.115013' ");

23 FileMaker Konferenz 2012 Salzburg www.filemaker-konferenz.com Nicolaus Busch, N. Busch GmbH SQL-Kommandos 23 INSERT & UPDATE fm_sql_Execute(" INSERT INTO Autor (ID) VALUES ('99ab23')"); ") fm_sql_Execute(" UPDATE Autor SET \"Nachname\"='Sarasin', \"Vorname\"='Philipp' WHERE \"ID\" = '99ab23'; ")

24 FileMaker Konferenz 2012 Salzburg www.filemaker-konferenz.com Nicolaus Busch, N. Busch GmbH SQL-Kommandos 24 Datensatz löschen (DELETE) Let( $Command = "echo fm_sql_execute( \" DELETE FROM " & table & " WHERE \\\"_pk_GUID\\\"='" & id & "' \");"; PHP_Execute ($Command) ) LETZTE WARNUNG: NICHT SO Let( $Command = "echo fm_sql_execute( \" DELETE FROM " & table \");"; PHP_Execute ($Command) )

25 FileMaker Konferenz 2012 Salzburg www.filemaker-konferenz.com Nicolaus Busch, N. Busch GmbH SQL-Kommandos 25 Exkurs: Erweiterte Möglichkeiten durch PHP- Programmierung Beispiel: Daten verschlüsseln Variable setzen [$PW; Wert:"IchBinGeheim"] Variable setzen [$Text; Wert:Get ( ActiveFieldContents )] Variable setzen [$Query; Wert:"$cipher = MCRYPT_RIJNDAEL_128;$key = hash('md5', '" & $PW & "');$iv_size = mcrypt_get_iv_size($cipher, MCRYPT_MODE_ECB);$iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);$crypt_text = mcrypt_encrypt($cipher, $key, '" & $Text & "', MCRYPT_MODE_ECB, $iv);$Result = base64_encode($crypt_text);echo $Result;"] Variable setzen [$Result; Wert:PHP_Execute ( $Query )] Variable setzen [$Error; Wert:PHP_GetLastError] Feldwert setzen [; $Result] Gehe zu Feld []

26 FileMaker Konferenz 2012 Salzburg www.filemaker-konferenz.com Nicolaus Busch, N. Busch GmbH SQL-Kommandos 26 Exkurs: Erweiterte Möglichkeiten durch PHP- Programmierung Beispiel: Anzahl Werte ausgeben Variable setzen [$Feldname; Wert:Get( ActiveFieldName)] Variable setzen [$Tabelle; Wert:Get( LayoutTableName)] Variable setzen [$Query; Wert:"echo fm_sql_select(\"Select COUNT( DISTINCT " & $Feldname & ") FROM " & $Tabelle & "\");"] Variable setzen [$Result; Wert:PHP_Execute ( $Query )] Variable setzen [$Error; Wert:PHP_GetLastError] Eigenes Dialogfeld anzeigen ["Unique values of " & $Feldname; $Number]

27 FileMaker Konferenz 2012 Salzburg www.filemaker-konferenz.com Nicolaus Busch, N. Busch GmbH SQL-Kommandos 27 Funktionsbibliotheken am Beispiel Smartpill  Den Function-Maker nutzen  Tests definieren  Sets erstellen

28 FileMaker Konferenz 2012 Salzburg www.filemaker-konferenz.com Nicolaus Busch, N. Busch GmbH SQL-Kommandos 28 Funktionen zur Laufzeit laden Laden aus lokalen Dateien SetzeVar[ $Result ; Value:PHP_LoadFunctions ] Laden via URL SetzeVar[ $result; Value:PHP_LoadFunctionsFromURL ( "http://www.beispiel.ch/xml/PHPx_Functions.xml" ) ]

29 FileMaker Konferenz 2012 Salzburg www.filemaker-konferenz.com Nicolaus Busch, N. Busch GmbH SQL-Kommandos 29 Further reading http://www.w3schools.com/sql/ filemakerhacks.com: FM 12 ExecuteSQL: Robust Coding, part 1 Wikibooks: Einführung in SQL

30 FileMaker Konferenz 2012 Salzburg www.filemaker-konferenz.com Nicolaus Busch, N. Busch GmbH SQL-Kommandos 30 FileMaker Konferenz2010 Vielen Dank unseren Sponsoren Danke für das Bewerten dieses Vortrages


Herunterladen ppt "FileMaker Konferenz 2012 Salzburg www.filemaker-konferenz.com Nicolaus Busch, N. Busch GmbH SQL-Kommandos 1 Mit SQL-Kommandos FileMaker Daten lesen - und."

Ähnliche Präsentationen


Google-Anzeigen