FMM 201504 - MonkeyBread Software

Werbung
Plugins
Weblink
Webshop
Christian Schmitz
(Jg. 1981) entwickelt seit 11 Jahren Software und
seit 2006 auch FileMaker Plugins. Außerdem Plugins
für Real Studio und allerlei Software für Mac OS X,
Windows, Linux und iOS.
MBS Plugin
[email protected]
Nachdruck aus dem
FileMaker Magazin
siehe auch: www.filemaker-magazin.de
Datensätze effizient kopieren
Mit etwas SQL und dem MBS-Plugin
Haben Sie schon einmal ein Script geschrieben, um den
Inhalt einer Tabelle in eine andere zu kopieren? Zum Beispiel, wenn Ihre Daten in eine neuere Version der Datenbank überführt werden sollen oder von der Produktiv­
datenbank in eine Entwicklungsdatenbank – oder zurück.
Das Problem
Immer wieder stehen wir vor der Aufgabe, den Inhalt von Ta­
bellen bewegen zu müssen. Der Export und der anschließende
Import in Textdateien ist fehleranfällig, denn bei der Kon­
vertierung gehen häufig Informationen verloren. Dabei wird
zum Beispiel „vergessen“, ob ein Textfeld leer oder undefiniert
ist, bei Zahlen wird mitunter gerundet oder Im- und Export
sind sich nicht „einig“ über Tausender- bzw. Dezimaltrenner.
Containerwerte gehen beim Export ohnehin verloren. All das
muss nicht sein, denn es gibt eine Lösung.
Die Lösung
Die Funktion „FM.InsertRecordQuery“, die es seit der Ver­
sion 5.1 des MBS-Plugins gibt, kann Datensätze anlegen. Die
Daten dazu holt sie sich aus einer SQL-Abfrage. Aber keine
Angst, es handelt sich nur um einen SELECT-Befehl zum Ab­
fragen, der ganz einfach sein kann. Die Funktion sieht in der
Deklaration so aus:
MBS ("FM.InsertRecordQuery"; InsertFileName;
InsertTableName; FieldNames; QueryFileName; SQL
Statement; Params)
Mindestens fünf Parameter sind notwendig, wovon der e­ rste
– der Name der Datenbank für die Zieltabelle – gleich op­
tional ist. Der Name hilft dabei, die Anfrage eindeutig auf
die richtige Datenbank zu lenken, falls es den Tabellennamen
FMM_201504 mehr als einmal gibt. Ansonsten übergeben Sie an dieser Stelle ei­
nen leeren Text und FileMaker sucht sich die Tabelle aus einer
der offenen Datenbanken. Dafür benötigen Sie keine Bezie­
hungen oder sonstige Verknüpfungen, sondern Sie müssen ledig­
lich dafür sorgen, dass die Zieldatenbank geöffnet ist. Bei dem
zweiten Parameter handelt es sich um den Namen der Zielda­
tenbank. Quelle und Ziel können identisch sein, denn zuerst
wird die Abfrage ausgeführt und erst danach neu eingefügt.
So kann keine Endlosschleife innerhalb der Tabelle entstehen.
Der dritte Parameter erwartet eine Liste mit den Feldnamen
der Zieltabelle. Die Reihenfolge muss mit dem SQL-Befehl
im nächsten Parameter exakt übereinstimmen, ansonsten
bekommen Sie eventuell amüsante, aber wenig nützliche
Ergebnisse. Der SQL-Befehl selbst kann recht beliebig pro­
grammiert werden – Sie können ihn problemlos im Fenster
Datenanzeige mit der MBS-Funktion „FM.ExecuteSQL“
ausprobieren und am Ergebnis feilen.
Die folgende SQL-Zeile fragt die Felder Vorname und
Nachname ab. In der Beispieldatei wurden zwei zusätzliche
Zahlenfelder eingefügt, die in der Abfrage addiert bzw. mul­
tipliziert werden, sodass in der Zieldatenbank zwei Felder di­
rekt mit dem Ergebnis gefüllt werden können.
SELECT Vorname, Nachname, Zahl1+Zahl2, Zahl1*Zahl2
FROM Quelle
Im Datenanzeige-Fenster, das unter dem Menüpunkt Werkzeuge ➝ Datenanzeige zu finden ist, gehen Sie auf den Tab
„Überwachen“, wo Sie nach einem Klick auf die Plustaste den
Befehl so eingeben können:
MBS ("FM.ExecuteSQL"; "SELECT Vorname, Nachname,
Zahl1+Zahl2, Zahl1*Zahl2 FROM Quelle")
© 1994 – 2015 K&K Verlag GmbH, Hamburg
39
Plugins
Mit einem Klick auf die Taste „Jetzt auswerten“ führt das
MBS-Plugin die Abfrage durch und FileMaker zeigt die Er­
gebnisse an. Sind diese Ergebnisse so, wie Sie erwartet haben,
können Sie sich den Aufruf für „FM.InsertRecordQuery“ zu­
sammenstellen. Das könnte zum Beispiel so aussehen:
MBS ("FM.InsertRecordQuery"; "Ziel.fmp12"; "Ziel";
"Vorname¶Nachname¶Summe¶Produkt"; "Quelle.fmp12";
"SELECT Vorname, Nachname, Zahl1+Zahl2, Zahl1*Zahl2
FROM Quelle")
Nachdruck aus dem
FileMaker Magazin
siehe auch: www.filemaker-magazin.de
verknüpft werden. Der am Ende stehende Befehl GROUP BY
sorgt dafür, dass die Daten nach der Kundennummer grup­
piert werden und über den Anfang der Abfrage wird die Sum­
me über die Rechnungssumme gebildet. Somit erhalten wir
mit einer Befehls-Zeile eine Liste aller Kundennummern und
deren Gesamtrechnungssumme. „FM.InsertRecordQuery“
trägt diese Informationen dann als neue Datensätze in eine
Auswertungstabelle ein.
♦
Flexibel
Die Funktion ist äußerst flexibel. Mit ihrer Hilfe können Sie
Datensätze innerhalb der Tabelle oder Datensätze von einer
Tabelle in eine andere kopieren – auch über Datenbankgren­
zen hinweg. Beim Kopieren haben Sie über den SQL-Befehl
die Möglichkeit, Felder, die Sie übernehmen möchten, ein­
zeln auszuwählen. Verwenden Sie mathematische Opera­
tionen oder verketten Sie Felder zu einem Wert – ganz nach
Bedarf. Sie können auch Felder als Konstante in der Abfrage
angeben oder etwas per SQL-Parameter einfügen. Über den
SQL-Befehl SUM werden Summen direkt bei der Abfrage
gebildet und falls Sie sich mit JOINs auskennen, können Sie
sogar mehrere Tabellen kreuzen und die Ergebnismenge ab­
speichern.
Die Quelldatenbank aus dem Beispiel mit den Namen und den zwei Zahlen.
Schauen Sie sich mal diese Zeile an:
SELECT sum ("RechnungsSumme"), "KundenNr" FROM
Kunden, Rechnungen WHERE Kunden.KundenNr =
Rechnungen.KundenNr GROUP BY KundenNr
Für dieses Beispiel nutzen wir eine Tabelle Kunden, bei der je­
der Datensatz über eine eindeutige Kundennummer verfügt,
die sich im Feld KundenNr befindet. Eine zweite Tabelle
enthält Rechnungen. Wie die Posten und Artikel gespeichert
sind, ist hier nicht von Belang, wichtig ist lediglich das Feld
(eventuell ein berechnetes) mit dem Gesamtbetrag der Rech­
nung. Unsere Abfrage sucht alle Kunden und alle Rechnungen
zusammen, wobei die Datensätze über die Kundennummer
40
Die Zieldatenbank mit den Feldern für Namen, Summe und Produkt. Außerdem
noch ein Zeitstempel, den FileMaker automatisch setzt.
FMM_201504
2008 01
Deutschland e 9,50 | www.filemaker-magazin.de
Das unabhängige Magazin für FileMaker
Anwender und Entwickler
FMM_200801
Geschüttelt, nicht gerührt …
Das FileMaker Magazin
● Einzige, deutschsprachige Fachzeitschrift zu FileMaker
● Wissen aus erster Hand von anerkannten FileMaker Fachautoren
● Große Themenvielfalt für Anwender, Entwickler und
Fortgeschrittene
Gut zu wissen
Ist Maintenance
eigentlich ansteckend?
FileMaker für Einsteiger
Wie Sie in FileMaker Ihre
ersten „Felder bestellen“
Buchbesprechungen
© 1994 - 2008 K&K Verlag GmbH, Hamburg
Neue Fachbücher
zu FileMaker 9
FMM_2008_01.Titel.indd 1
Exklusiv für Premium-Abonnenten
29.04.2008 10:09:42 Uhr
● Sechs FMM Ausgaben pro Jahr
● Kostenlose Nutzung des Abonnentenbereichs auf
www.filemaker-magazin.de
● PDF-Online-Archiv mit allen bisher erschienenen Ausgaben
● Jede Ausgabe mit kostenlosen Beispieldateien und Zusatzinfos
zum Download
Unser Service
● Aktuelle Neuheiten, Tipps und Infos, Kleinanzeigen und
vieles mehr jederzeit online auf unseren Webseiten
● Hilfe bei allen Fragen zu FileMaker im FMM Forum
● Kompetente Beratung zum Kauf von FileMaker Lizenzen:
Einfach anrufen +49 (0)40 589 65 79 70.
Hier finden Sie Aktuelles zu FileMaker
Produkten, egal ob Sie kaufen, mieten
oder sich einfach informieren möchten.
Eine kostenlose Leseprobe des
FileMaker Magazins erhalten Sie,
wenn Sie hier klicken.
Wenn Sie sich für ein
FileMaker Magazin Abo
interessieren, klicken Sie
bitte hier!
K&K Verlag GmbH · www.filemaker-magazin.de · Telefon +49 40 589657970
Herunterladen