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.
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.
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.
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.
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.
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.
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’.