Simon B. Frei

Container Re-Import

Re-Import einer Datei aus dem Temporären Pfad

Container-Felder sind für eine Ansicht schnell in den temporären Pfad exportiert und automatisch geöffnet.

Doch eine geänderte Version wieder in das Container-Feld einzufügen ist meistens umständlich und mühsam.

Dieser Beitrag beschreibt eine Lösungsmöglichkeit, die exportierte Datei nach dem Speichern im externen Programm aus dem temporären Pfad einfach zu re-importieren.

Das Prinzip / Wie funktioniert das

Was wir dazu benötigen ist ein Script für den Export, eine globale Variable mit Container-Identifikations-Informationen sowie ein Script für den Import.

Die einzelnen Schritte

Im Script „FileStack__Container_oeffnen__XML“ wird der Container in den temporären Ordner exportiert und automatisch geöffnet.

Direkt nach dem erfolgreichem Container-Export führen wird die globale Variable $$ReImport.Master nachgeführt. In dieser globalen Variable werden alle Datensatz-spezifischen bzw. Container-spezifischen Informationen in Form von XML-Strings verwaltet. Der einzelne XML-Tag identifiziert den Container und der XML-Wert wird für das Ein-/Ausblenden des Re-Import-Buttons sowie als zusätzliche Absicherung beim Re-Import verwendet.

Im Schritt der Nachführung prüfen wir, ob in der globalen Variable $$ReImport.Master der für diesen Datensatz bzw. Container entsprechende XML-Tag vorhanden ist.
Ist der XML-Tag vorhanden, wissen wir, dass wir die Datei aus dem temporären Pfad wieder importieren können (jedenfalls so lange bis FileMaker geschlossen wird).
Ist der Wert nicht vorhanden, erstellen wir den entsprechenden XML-Tag und ergänzen ihn in der globalen Variable $$ReImport.Master mittels der Funktion „Liste ()“.

Der XML-Tag (<FileStack.ID>1</ FileStack.ID>) muss eindeutig sein. Aus diesem Grund beinhaltet der XML-Tag ein Prefix und eine ID. Das Prefix dient der Unterscheidung von verschiedenen Containern bzw. Container aus verschiedenen Tabellen. Die ID (z.B. eine DatensatzID oder eine Seriennummer) dient der Unterscheidung der Datensätze innerhalb einer Tabelle. Anstelle von Prefix und ID könnte auch eine UUID verwendet werden.

Im Script „FileStack__Container_ReImport__XML“ wird die Datei wieder über den Script-Schritt „Datei einfügen []“ re-importiert.

Abschliessende Bemerkungen

Da der Benutzer weder für den Export noch für den Re-Import den Dateinamen beeinflussen kann, wird der Dateinamen über die Funktion „HoleContainerAttribute (Container;filename)“ ermittelt und verwendet (Auch hier könnte eine UUID verwendet werden). Auf weitere Absicherungen wie z.B. das Änderungsdatum der exportierten Datei mit dem Änderungsdatum des Containers zu vergleichen oder den Re-Import für gewisse Datei-Formate zu unterbinden habe ich in diesem Beispiel unterlassen.

In der Beispiel-Datei gibt es auch eine JSON-Variante. Diese basiert auf dem selben Prinzip. Aber je nach FileMaker-Version steht JSON nicht zur Verfügung oder wird nicht unterstützt (z.B. Runtime-Lösung).

Download der Beispieldatei

Menü schließen