Jahresarchiv: 2020

Elemente nur in aktivem DS darstellen
Autor: René A. Da Rin,   Artikel erstellt: am 05.10.2020,   aktualisiert am 12.10.2020



Je nachdem wie viel Platz vorhanden ist, erspare ich mir auch schon mal ein separates Layout für die Dateneingabe und erledige das direkt in der Liste. Das kann man machen, wenn der Bildschirm gross genug ist und es sich nur um wenige Felder handelt.

Es kommt dann auch schon mal vor, dass ich in der Zeile einen oder mehrere Buttons platziere. Diese wiederholen sich dann aber in jeder Zeile, was dann doch sehr unschön aussieht.

Die Buttons sollen also nur in der Zeile angezeigt werden, welche gerade aktiv ausgewählt ist.

Dafür benötigen wir in der Tabelle eine erst mal für jeden Datensatz eine eindeutige ID. Das Feld nennen wir PrimaryKey.

Anschliessend wird ein Script erstellt. Nennen wir es aktiver Datensatz.

Variable setzen [ $$id ; Wert: tabellenname::PrimaryKey]
Fenster aktualisieren []

Nun wechseln wir in die Layouteinstellungen der Liste. Hier geht es zum Reiter ScriptTrigger. Weisen Sie dem Ereignis BeiDatensatzLaden das Script aktiver Datensatz zu.

Zum Schluss müssen wir noch das Verhalten des Buttons angeben. Unter Objekt ausblenden wenn tragen Sie $$id <> tabellenname::PrimaryKey ein.

Wenn alles richtig gemacht wurde, wird der Button nun nur in der ausgewählten Zeile angezeigt.

Quelle: FileMaker Magazin, vielen Dank für die tatkräftige Unterstützung. Im Forumsbeitrag gibt es auch eine Beispieldatei zum runter laden.

https://filemaker-magazin.de/forum/beitrag/204159

Weiterlesen

Eindeutige Datensatz-ID
Autor: René A. Da Rin,   Artikel erstellt: am 05.10.2020,   aktualisiert am 12.10.2020



Wichtig in jeder Tabelle ist, das jeder Datensatz eine eindeutige ID bekommt. Am Einfachsten erstellt man ein Zahlenfeld mit fortlaufender Nummer.

Will (muss) man aber sicherstellen, dass eine ID auch über mehrere Tabellen hinweg eindeutig ist und auch nicht irgendwo mit einer Berechnung zufällig übereinstimmt, sollte man hier eine UUID verwenden.

Dafür muss das Feld in ein Textfeld geändert werden. Unter automatischer Eingabe wählen Sie berechneter Wert aus und tragen Hole( UUID ) ein. Zusätzlich wählen Sie keine Veränderung des Wertes bei Dateneingabe aus. Die UUID schaut dann z.B. so aus:

961389A1-BE95-4784-8EC4-7C3E69EEB930

Weiterlesen

Lazy Blocks
Autor: René A. Da Rin,   Artikel erstellt: am 15.09.2020,   aktualisiert am 13.10.2020



Es gibt mittlerweile diverse Plugins, welche den Editor um weitere Blöcke erweitern. Nebst den Vorteilen der zusätzlichen Blöcke gibt es auch zwei weitere Nachteile: Meist kommen so gleich mehrere Plugins zum Einsatz, wobei jeweils nur ein kleiner Teil der Blöcke verwendet wird. Also Einiges an unnötigem Balast.

Hier kommt jetzt Lazy Blocks ins Spiel.

Was macht Lazy Blocks?

Dieses Plugin erlaubt es eigene Blocks zu erstellen und Diese völlig frei zu gestalten.

Wie funktioniert Lazy Blocks?

Nach der Installation des Plugins finden Sie den Zugang direkt in der Seitenleiste. Noch ist die Liste mit Ihren individuellen Blöcken leer. Also erstellen Sie ihren ersten Block.

«<div style="color: #df0098; float: right; margin: 18px 0 18px 20px; width: 35%; text-align: right;  font-style:italic;">
   <span style="font-size:18px; font-weight:600;">
      «{{meinzitat}}»
   </span>
   <br />     
   <span style="font-size:0.9em; font-weight:300; color: #750250;">
      {{zitatgeber}}
   </span>
</div>»
«Das ist ein supidupi neues Zitat»
René A. Da Rin

Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.

Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit

amet,

Weiterlesen

Ein einfaches Glossar
Autor: René A. Da Rin,   Artikel erstellt: am 04.09.2020



Derzeit teste ich die Möglichkeit eines einfachen Glossars über eine einfache Text ersetzen Funktion in einem Snippet.

Weiterlesen

mm2 automatisch formatieren
Autor: René A. Da Rin,   Artikel erstellt: am 04.09.2020,   aktualisiert am 12.10.2020



Bei der Eingabe in ein Textfeld wird der Kabel-Querschnitt als ‘mm2’ eingegeben. Allerdings soll der Text als ‘mm2‘ gespeichert werden. Das manuell zu erledigen ist umständlich und unnötig.

Dafür erstellen Sie ein Script, welches mittels Trigger beim Verlassen des Feldes ausgeführt wird. Wenn man Artikelbezeichnungen von Webseiten kopiert, wird der Text oft anders formatiert eingefügt als man das haben möchte. Dazu entferne ich grundsätzlich erst mal sämtliche Formatierungen.

Feldwert setzen [ material::artikel.name ;
TextFormatEntfernen ( material::artikel.name ) ]

Nun kommen die Funktionen Austauschen() und TextStilZufügen() zum Einsatz. Angewendet wird Austauschen() auf ‘mm2’. TextStilZufügen wird auf die ‘2’ angewendet. Die ‘2’ wird nur ‘hochgestellt’, wenn direkt davor (ohne Leerstelle) ein ‘mm’ davor steht.

Feldwert setzen [ material::artikel.name ; 
Austauschen ( material::artikel.name ; 
"mm2" ; "mm" & TextStilZufügen ("2"; Hochgestellt) )]
Anmerkung

Die hochgestellte Darstellung scheint in der FileMakerGo App auf dem iPhone nicht unterstützt zu werden.

Weiterlesen

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.

Weiterlesen

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.

Weiterlesen

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.

Weiterlesen

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.

Weiterlesen

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

Weiterlesen