Container Re-Import


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

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. 

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

  1. Im Script "FileStack__Container_oeffnen__XML" wird der Container in den temporären Ordner exportiert und automatisch geöffnet.
  2. Direkt nach dem erfolgreichen Container-Export wird die globale Variable $$ReImport.Master aktualisiert. In dieser globalen Variable werden alle datensatzspezifischen bzw. containerspezifischen 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.
  3. Im Schritt der Aktualisierung prüfen wir, ob in der globalen Variable $$ReImport.Master der für diesen Datensatz bzw. Container entsprechende XML-Tag vorhanden ist.
  4. 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).
  5. 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 Präfix und eine ID. Das Präfix dient der Unterscheidung von verschiedenen Containern bzw. Container aus verschiedenen Tabellen. Die ID (z.B. eine Datensatz-ID oder eine Seriennummer) dient der Unterscheidung der Datensätze innerhalb einer Tabelle. Anstelle von Präfix 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.

Abschließende Bemerkungen

Da der Benutzer weder für den Export noch für den Re-Import den Dateinamen beeinflussen kann, wird der Dateiname ü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 demselben Prinzip. Aber je nach FileMaker-Version steht JSON nicht zur Verfügung oder wird nicht unterstützt (z.B. Runtime-Lösung).

Download
ContainerReImport_FMDB_v1-02.fmp12 (26 downloads) 276 kB 2023-07-16
ContainerReImport_FMM-201906_ORG.pdf (25 downloads) 3.18 MB 2023-07-16

FileMaker'ing

Hier eine Übersicht über die FileMaker-Lösungen, Module und Beispielen

Artikel zum Container Re-Import