Monatsarchiv: August 2020

Fehlermeldung bei der Suche unterdrücken
Autor: René A. Da Rin,   Artikel erstellt: am 24.08.2020



Wenn Sie in einem Script eine Suche durchführen und FileMaker findet dazu keine Datensätze, wird in der Regel ein Fehlerdialog angezeigt. Dieser Dialog kann auf Grund seiner 3 Auswahlmöglichkeiten zu erheblichen Störungen im Ablauf führen. Die Auswahl ‘Fortsetzen’ ist dabei die einzig korrekte Auswahl, jedoch nicht prioritär mit der Enter-Taste belegt. ‘Abbrechen’ stoppt das komplette Script und kann zu einem undefinierten Zustand führen. ‘Suchabfrage ändern’ durch den Anwender kann auch zu schweren Fehlern führen.

Aus diesem Grund sollten solche Dialoge unterdrückt werden. Das Machen Sie mit der Funktion ‘Fehleraufzeichnung setzen’.

Fehleraufzeichnung setzen [ Ein ]
Suchmodus aktivieren [ Pause: aus ]
Feldwert setzen [ projekt ; setup::akt.projekt ]
Ergebnismenge suchen []
Fehleraufzeichnung setzen [ Aus ]

Wird ‘Fehleraufzeichnung’ auf ‘Ein’ gesetzt, werden solche Dialoge unterdrückt. Wichtig ist dabei, nach der Suche die ‘Fehleraufzeichnung’ wieder auf ‘Aus’ zu setzen, damit anderorts mögliche Dialoge angezeigt werden.

Sollte der Anwender auf Grund eines leeren Suchergebnisses selber eine Entscheidung treffen müssen, kann dies mit einem ‘eigenen Dialogfeld’ umgesetzt werden.

Ein Beispiel aus der Praxis

In einer Datenbank gibt es 2 Tabellen, ‘Projekte’ und ‘Aufgaben’. Wird in der Tabelle ‘Projekte’ ein neues Projekt angelegt, gibt es in der Tabelle ‘Aufgaben’ noch keine Einträge. Ein Wechsel zur Liste mit den Aufgaben wird also ein leeres Ergebnis liefern, bis eine erste Aufgabe erstellt wurde.

Automatisierte Suche
Autor: René A. Da Rin,   Artikel erstellt: am 24.08.2020



Oftmals ist es in Scripts nötig im Hintergrund automatisierte Suchen durchzuführen. Zum Beispiel, wenn ich alle Datensätze aufrufen will, welche einem bestimmten Projekt zugeordnet sind. Im Feld ‘projekt’ ist die Nummer des Projektes hinterlegt. Die Projektnummer des aktuell zu bearbeitenden Projektesist im Feld ‘akt.projekt’ der Tabelle ‘setup’ hinterlegt.

Suchmodus aktivieren [ Pause: aus ]
Feldwert setzen [ projekt ; setup::akt.projekt ]
Ergebnismenge suchen []

Im Script wird der Suchmodus aktiviert, Pause ‘aus’ bewirkt, dass kein Suchdialog angezeigt wird. Mit Feldwert setzen wird die Projektnummer zum Suchen eingetragen und ‘Ergebnismenge suchen’ (ohne weitere Parameter) führt die Suche aus.

Führt die Suche zu einem leeren Ergebnis (keine Datensätze gefunden), gibt Filemaker eine Fehlermeldung aus. Wie Sie Diese unterbinden können, lesen Sie hier in diesem Beitrag.

Datensatz mittels Textfeld löschen
Autor: René A. Da Rin,   Artikel erstellt: am 08.08.2020



Ich habe eine Tabelle mit nur 3 Feldern deren Inhalte ich direkt in der Liste bearbeite.

Um einzelne Datensätze zu löschen wollte ich auf eine Taste oder Symbol verzichten, da dies in jeder Zeile dargestellt werden müsste.

Meine Lösung: Eines der Felder mit einem Script Trigger versehen, der ein Script auslöst, wenn das Feld verlassen wird. Das Script löscht den Datensatz, wenn im Feld ‘delete’ drin steht. Einen Hinweis auf diese Funktion hab ich als ‘Quick Info’ hinterlegt.

Dynamische Wertelisten
Autor: René A. Da Rin,   Artikel erstellt: am 05.08.2020



Im Beitrag ‘Layout für unterschiedliche Tabellen nutzen‘ habe ich beschrieben, wie man in einer Tabelle unterschiedliche Listen verwenden kann.

Nun möchte ich je nach aufgerufener Liste für das Feld konto.text separate Wertelisten verwenden. Zahlungen an Wish erfolgen z.B. ausschliesslich über PayPal. Somit benötige ich im Konto ‘iTunes’ diesen Eintrag nicht.

Dafür erstelle ich eine neue Tabelle ‘Wertelisten’. Diese besteht aus den Feldern konto und wert. Für jeden Eintrag in der Werteliste erstelle ich einen Datensatz. Ins Feld konto kommt der selbe Wert wie ich in in der Kontoliste im Feld konto.ref verwende. Ins Feld wert kommt der Eintrag für die Werteliste.

Als Nächstes wird nun eine Beziehung benötigt zwischen den Feldern konto in der Tabelle ‘Werteliste’ und dem Feld konto.ref der Tabelle ‘Konten’. Bedingung: Werte identisch.

Im Layout wird dem Feld nun eine neue Werteliste zugeordnet. Diese bekommt die Einstellung ‘Werte verwenden aus Feld’, hier wählen wir das Feld wert aus der Tabelle Wertelisten aus, mit der Option ‘nur Bezugswerte aufnehmen, beginnend mit: (hier Bezugstabelle auswählen).

Nun bekommt die Werteliste für das Feld text in der Tabelle ‘Konten’ die Werte welche entsprechend dem Feld konto.ref zugeordnet sind.

Layout für unterschiedliche Tabellen nutzen
Autor: René A. Da Rin,   Artikel erstellt: am 05.08.2020



Gleich vorweg, FileMaker kann immer nur 1 Tabelle einem Layout zuweisen.

Um die Übersicht über die an verschiedenen Orten geparkten Guthaben zu behalten, habe ich mir eine Datenbank eingerichtet, um Ein- und Ausgänge für PayPal, iTunes, Playstore, Revolut, etc. zu erfassen.

Das gibt dann eine Liste für PayPal, eine Liste für iTunes…

Die Tabellen sind immer identisch. Datum, Text, Gutschrift, Abbuchung und Saldo. Dazu erstellt FileMaker jeweils ein eigenes Listenlayout. Die Listen sind auch immer identisch.

Also das selbe Layout mehrfach gestalten, Änderungen mehrfach nachführen, das ist nicht optimal.

Die Lösung ist einfach. Alle Datensätze in 1 Tabelle mit 1 Layout.

Dazu braucht es lediglich ein zusätzliches Feld, welches den Eintrag dem jeweiligen Konto zuordnet, z.B. konto.ref.

Für jedes Konto gibt es nun ein eigenes Script, das nach allen Datensätzen sucht, welche zum Konto gehören.

  • Feldwert setzen, z.B. ‘paypal’ ins Feld konto.akt
  • Feldwert setzen, z.B. ‘PayPal’ ins Feld konto.titel
  • Suchmodus aktivieren (Pause: aus)
  • Feldwert setzen, z.B. ‘paypal’ ins Feld konto.ref
  • Ergebnismenge suchen []
  • Sortieren nach Datum

Wie Sie den Script entnehmen können, habe ich der Tabelle noch 2 weitere Felder hinzugefügt, beide mit globalem Wert. Das Feld konto.akt bekommt den selben Wert wie die gelisteten DS im Feld konto.ref haben. Das Feld verwende ich im Script ‘neuer DS’ um den Wert im Feld konto.ref zu setzen.

Das Feld konto.titel ist im Layout im Kopfbereich platziert, damit sichtbar ist, welches Konto gelistet ist.

Wie dem Feld text in der Tabelle Konten eine dynamische Werteliste zugeordnet werden kann, wird im Beitrag ‘Dynamische Wertelisten‘ beschrieben. Den Eintrag ‘Wish’ benötige ich z.B. nur im Konto ‘PayPal’.