Warenkorb
0
Wagen 0
Telefonische Beratung +49 (0) 441-30 43 76 40
Rapid Engineering ist der große Vorteil von FileMaker-Datenbanken, was in der Praxis dazu führt, daß FileMaker-Datenbanken meist „leben“ und stetig erweitert werden. Aus verschiedenen Gründen ist es dabei nicht empfehlenswert, in Echtzeit an der laufenden Datenbank Änderungen vorzunehmen. Sicherer ist eine Testumgebung mit einer separaten Entwicklerversion, mit der die Produktivversion von Zeit zu Zeit aktualisiert wird. Bei diesem Vorgang müssen alle Datentabellen aus der laufenden Version exportiert und nach Ersetzen der FileMaker-Datenbanken wieder importiert werden, sofern Daten und Struktur nicht penibel getrennt wurden. Um nicht bei jedem Update manuell alle Daten exportieren und wieder importieren zu müssen, läßt sich z.B. mit Hilfe des Base Elements Plugins eine Routine entwickeln, die diesen Vorgang automatisiert ausführt. In diesem Artikel zeigen wir, wie es geht und wie der Umgang mit FileMaker- und Systempfaden zum Kinderspiel wird. Am Ende des Artikels kann die Beispieldatei heruntergeladen werden. Das Archiv enthält eine Beispieldatei im FileMaker-12-Format.
Die beschriebene Lösung nutzt Funktionen des kostenlos erhältlichen Base Elements Plugins, das unter FileMaker 11 und 12 lauffähig ist. Das Base Elements Plugin kann auf der Website des Herstellers Goya Pty Ltd. kostenlos heruntergeladen werden und steht für Mac OS X und Windows als 32-bit oder 64-bit-Version zum Download zur Verfügung.
Für die Dateiauswahlbox ist das ebenfalls kostenlos verfügbare Dialog-Plugin erforderlich. Das Dialog-Plugin unterstützt eine Vielzahl an Dialogen und Eingabemöglichkeiten, ist für Mac OS X und Windows verfügbar und kann hier heruntergeladen werden.
Um mit Pfaden einfacher umgehen zu können, beinhaltet die Beispiellösung insgesamt sieben eigene Funktionen (Custom Functions). Diese können mit FileMaker Pro Advanced eingesehen werden und stehen als verwendbare Funktionen auch unter FileMaker Pro zur Verfügung. Die beiden Custom Functions, die in der Praxis von uns genutzt werden, heißen:
PathPluginToFM ( Pfad ) – wandelt einen nativen Systempfad in einen FileMaker-Pfad um. Die Funktion steht auf Windows- und Mac-Clients zur Verfügung.
PathFMToPlugin ( Pfad ) – wandelt einen FileMaker-Pfad in einen nativen Systempfad um. Die Funktion steht auf Windows- und Mac-Clients zur Verfügung und kann z.B. für das ebenfalls kostenlos erhältliche Dialog Plugin verwendet werden, um bei einer Dateiauswahlbox Pfade vorzugeben.
Die anderen fünf Custom Functions sind Teilfunktionen und werden von den beiden genannten Custom Functions intern verwendet.
Unsere Beispieldatei enthält insgesamt drei Tabellen: Updatefunktion, Tabelle 1 und Tabelle 2. So simuliert die Beispieldatei eine FileMaker-Lösung, in der mehrere Tabellen per Export und Import upgedatet werden können. Damit FileMaker weiß, wohin die Datenbanken gespeichert werden sollen, muß zunächst ein Speicherpfad gesetzt werden. Dies erfolgt mit der Schaltfläche […] vor dem Feld für den Pfad, die das Script „sf.Pfadauswahl“ aufruft. Dieses Script ruft lediglich eine Dateiauswahlbox mit Hilfe des Dialog Plugins auf:
Variable setzen [$pfad; Wert:Dialog_SelectFolderDialog (""; "Systempfad wählen...";
PathFMToPlugin (Hole (DokumentenPfad)))]
Der ausgewählte Pfad wird in die Variable $pfad geschrieben. Als Standard-Pfad (bei dem der Auswahldialog beginnen soll) wurde in diesem Beispiel das Dokumentverzeichnis des aktuellen Benutzers angegeben. Da das Dialog-Plugin native Pfade und keine FileMaker-Pfade annimmt, wird der Pfad Hole(DokumentenPfad) mit der Funktion PathFMToPlugin () in einen nativen Pfad gewandelt. Wenn der Benutzer einen Pfad angegeben und auf [Auswählen] geklickt hat, wird der Pfad mit der Funktion
Feldwert setzen [Updatefunktion::Dateipfad; $pfad]
in das Feld <<Updatefunktion::Dateipfad>> geschrieben. Damit verfügt die Lösung nun über einen gültigen Dateipfad, in das die Datenbanken für das Update geschrieben werden können.
Da die Lösung nun über einen gültigen Pfad für den Export verfügt, können nun alle Tabellen in externe Datenbanken exportiert werden. Der Export einer Datentabelle erfolgt über vier Scriptzeilen:
Variable setzen [$pfad; Wert:PathPluginToFM (Updatefunktion::Dateipfad) & "/Updatefunktion.fmp12]
Mit diesem Befehl wird der in der Tabelle Updatefunktion gespeicherte Dateipfad FileMaker-kompatibel in die Variable $pfad geschrieben.
Gehe zu Layout ["Updatefunktion" (Updatefunktion)]
Wechseln in das Layout, aus dem die Datensätze exportiert werden sollen
Alle Datensätze anzeigen
Da im Export alle Datensätze exportiert werden sollen, ruft dieser Befehl in der Zieltabelle alle Datensätze auf. Für spezielle Exporte kann an dieser Stelle auch eine andere Selektion von Datensätzen durchgeführt werden.
Datensätze exportieren [Ohne Dialogfeld; "$pfad"; Unicode (UTF-16)]
Mit diesem Befehl werden die Datensätze aus der Tabelle des aufgerufenen Layouts in die in $pfad angegebene externe Datei exportiert. Als Dateiformat wurde in unserem Beispiel FileMaker (.fmp12) angegeben. Wichtig ist an dieser Stelle, auch die zu verwendende Feldfolge anzugeben, in der die Daten exportiert werden sollen:
Diese vier Befehle werden nun einfach für jede in der Datenbank befindliche Tabelle wiederholt. Dabei wird jeweils der Dateiname für die Variable $pfad, das aufzurufende Layout sowie die Feldfolge für den Export an jede Tabelle angepaßt.
Am Ende enthält das Script für den vollständigen Datenexport die oben erläuterten vier Befehlszeilen für jede Tabelle, die im Rahmen der Updatefunktion exportiert werden soll.
In Ihrer Lösung sollten Sie nun das Script für den Datenexport einmal durchführen – nicht nur zu Testzwecken, sondern Sie benötigen die exportierten Dateien auch, um das Script für die Importe erstellen zu können. Wenn Ihr Exportscript fehlerfrei ist, sollten sich nun alle Dateien im gewählten Verzeichnis befinden.
Im letzten Schritt gilt es, die Daten aus den exportierten Datenbanken automatisiert wieder in die Lösung zu importieren. Dafür enthält die Beispiellösung das Script „ts.Update_Import“, das folgendermaßen aufgebaut ist:
Variable setzen [$updatepfad; Wert:Updatefunktion::Dateipfad]
Mit diesem Befehl wird der im Feld <<Updatefunktion::Dateipfad>> gespeicherte Pfad in die Variable $updatepfad geschrieben. Diese Zuweisung muß nur einmal in diesem Script erfolgen. Alle weiteren Befehle werden so oft wiederholt, wie Tabellen importiert werden sollen.
Variable setzen [$pfad; Wert:PathPluginToFM ($updatepfad) & "/Updatefunktion.fmp12"]
Der Variablen $pfad wird mit diesem Befehl der zuvor in $updatepfad gespeicherte Pfad sowie der Dateiname der exportierten Datenbank zugewiesen und das Ganze mit der Funktion „PathPluginToFM“ in einen gültigen FileMaker-Pfad konvertiert.
Gehe zu Layout ["Updatefunktion" (Updatefunktion)]
Wechseln in das Layout, in das die Datensätze importiert werden sollen
Alle Datensätze anzeigen Alle Datensätze löschen [Ohne Dialogfeld]
Falls sich in der Tabelle noch alte Datensätze befinden sollen, werden sie mit diesen beiden Befehlen vor dem Import aus der Datentabelle gelöscht.
Datensätze importieren [Ohne Dialogfeld; "$pfad"; Hinzufügen; Mac Roman]
Mit diesem Befehl werden die Datensätze in die Tabelle des aufgerufenen Layouts (hier: „Updatefunktion“) importiert.
Beim Entwickeln dieses Scriptes kann der Importbefehl jedoch nicht einfach so hingeschrieben werden, denn wenn als Dateiname eine Variable angegeben wurde, läßt sich die Feldreihenfolge für den Import nicht festlegen. Aus diesem Grund müssen Sie zunächst als Dateinamen zusätzlich die im vorherigen Schritt exportierte Datenbankdatei angeben. Doppelklicken Sie hierfür den Befehl [Datensätze importieren…] und klicken Sie auf die Schaltfläche [Datei hinzufügen…]. Wählen Sie nun die im vorherigen Schritt exportierte passende Datenbankdatei aus:
Nachdem Sie den Dialog mit [OK] bestätigt haben, können Sie nun unter [Importfolge angeben] die Feldreihenfolge angeben, in der die Datenbanken importiert werden sollen.
Unter [Quelle] sehen Sie die Datentabelle der zuvor exportierten Datenbank. Wählen Sie im Popupmenü [Ziel] die passende Zieltabelle aus, in die die Daten aus der externen Datentabelle importiert werden sollen und passen ggf. die Feldreihenfolge an. Legen Sie nach Klick auf [OK] fest, ob automatische Eingabeoptionen durchgeführt werden sollen und klicken Sie auf [Importieren], um die Importoptionen zu speichern.
Klicken Sie nun wieder auf [Datei…] unter Datenquelle angeben oder doppelklicken Sie den Scriptbefehl Datensätze importieren. Entfernen Sie nun wieder die Zeile file:Dateiname.fmp12, so daß im Eingabefeld unter Pfadliste nur noch $pfad steht.
Um weitere Tabellen automatisch zu importieren, wiederholen Sie den Vorgang für jede Datentabelle. Am Ende sieht das Importscript so aus wie in unserer Beispiellösung:
Damit ist die Funktion für eine automatisierte Datenübernahme bei Updates fertiggestellt. In der Beispiellösung wurden die beiden Scripte auf zwei Schaltflächen [Update: Export] und [Update: Import] gelegt. Mit der Schaltfläche [FileMaker-Pfad] wird demonstriert, wie die Custom Function PathPluginToFM (Pfad) einen Systempfad in einen FileMaker-Pfad umwandelt.
Scripte lassen sich einfach über die Zwischenablage von einer FileMaker-Lösung in eine andere Lösung übertragen. Öffnen Sie einfach den Dialog Scripts verwalten, markieren Sie das gewünschte Script mit der Maus und kopieren Sie das Script in die Zwischenablage per Menü [Bearbeiten – Kopieren] oder Tastenkombination [Strg/Cmd-C]. Öffnen Sie daraufhin in der Ziel-Lösung den gleichen Dialog und fügen das zuvor kopierte Script einfach per Menübefehl [Bearbeiten – Einfügen] wieder ein.
Tabellen können auf mehrere Arten in eine bestehende Lösung eingefügt werden. Der einfachste Weg ist der Import der Tabelle über die Schaltfläche [Importieren…] im Dialog Datenbank verwalten. In einem nachfolgenden Dialog können dann alle Tabellen ausgewählt werden, die aus der Quell-Lösung importiert werden sollen. Diese Methode eignet sich also besonders, wenn mehrere Tabellen gleichzeitig importiert werden sollen. Soll nur eine Tabelle importiert werden, kann dies wie ein Script auch über die Zwischenablage erfolgen. Soll eine Tabelle samt Daten importiert werden, kann dies mit dem Befehl [Ablage/Datei > Datensätze importieren > Datei] erfolgen. Im Import-Dialog muß dann als Zieltabelle Neue Tabelle angegeben werden.
Wertelisten können einfach über die Zwischenablage von einer FileMaker-Lösung in eine andere Lösung importiert werden. Öffnen Sie einfach den Dialog unter [Ablage/Datei > Verwalten > Wertelisten], markieren Sie die gewünschte Werteliste mit der Maus und kopieren Sie die Werteliste in die Zwischenablage per Menü [Bearbeiten – Kopieren] oder Tastenkombination [Strg/Cmd-C]. Öffnen Sie daraufhin in der Ziel-Lösung den gleichen Dialog und fügen die zuvor kopierte Werteliste per Menübefehl [Bearbeiten – Einfügen] wieder ein.
Klicken Sie im Dialog [Ablage/Datei > Verwalten > Eigene Funktionen…] auf die Schaltfläche [Importieren] und wählen daraufhin die Beispieldatei aus. Wählen Sie im nachfolgenden Dialog die gewünschten eigenen Funktionen aus und bestätigen den Dialog. Bitte beachten Sie, daß diese Funktion nur in FileMaker Pro Advanced, nicht jedoch in FileMaker Pro zur Verfügung steht.
Am heutigen Tag hat FileMaker die Datenbank-App FileMaker Go für das Apple iPhone und iPad aktualisiert. Die neue Version 1.2 unterstützt nun auch Linien-, Balken-, Flächen- und Tortendiagramme aus FileMaker 11 direkt auf dem iPhone oder iPad. Auf diese Weise können Geschäftsdaten auch grafisch unterwegs ausgetauscht und analysiert werden. Mit…
Pressemitteilung: FileMaker stellt den Mitgliedern seines Technical Networks ein weiteres FileMaker Trainingsmodule-Starterkit kostenlos zur Verfügung. Es besteht aus drei bereits bisher gern genutzten Einheiten der FileMaker Trainingsmodule zu FileMaker 12. Das Technical Network ist eine kostenfreie Community, mit der Entwickler ihr FileMaker-Fachwissen erweitern und sich gegenseitig austauschen können. Das Trainingsmodule-Starterkit umfasst…
Auch auf Sylt sollte der heutige Tag sehr sonnig ausgefallen sein, was in diesem Fall einmal nichts mit FileMaker zu tun hat. Umso mehr ist das jedoch bei der Sansibar auf Sylt der Fall - seit mehr als 35 Jahren ist das Unternehmen in der Gastronomie und im Handel bundesweit…
Hinzufügen von {{itemName}} zum Warenkorb
Hinzugefügt {{EinkaufsName}} zum Warenkorb
Hallo Markus,
wäre es nicht einfacher, Form, Inhalt und Funktion von einander zu trennen? So können bis auf die Inhalts-DB alle Dateien problemlos mit einem beliebigen Install-update-Programm ersetzt werden. Ein Script mit Admin-Rechten könnte außerdem die Felder in den Inhalts-DB manipulieren.
Die Variante oben habe ich auch einmal durch-dekliniert. Da konnte man noch pro DB nur eine Tabelle speichern!
Heute würde ich das so programmieren:
1. DB für Funktionen
2. DB Layouts
3. DB Struktur/Relas
4. DB Inhalt
Das ist übersichtlich und sehr simpel zu updaten.
Hallo Felix,
in welcher Struktur eine Datenbank entwickelt wird, bleibt ja jedem selbst überlassen. In diesem Artikel wird nur gezeigt, wie Dateninhalte von Tabellen in einem Rutsch importiert werden können.
Viele Grüße!