Jahresarchiv: 2020

Einstellungen in MacOS Big Sur
Autor: René A. Da Rin,   Artikel erstellt: am 07.12.2020



Transparenz der Menuleiste deaktivieren

Standardmässig wendet BigSur eine relativ starke Transparenz auf die obere Menuleiste an. Das heisst, sie nimmt stark die Färbung des aktuellen Hintergrundes an. Dieser wechselt ständig, je nachdem ob der Finder im Vordergrund ist oder z.B. ein geöffnetes Foto. Alleine die ständige Farbänderung kann ganz schön störend sein. Je nach Hintergrund kann sich das auch negativ auf den Kontrast auswirken.

Meine Meinung: Transparenz braucht es nicht.

Das lässt sich zum Glück aber abstellen.

Öffnen Sie dazu die Systemeinstellungen und gehen Sie da zu den Bedienungshilfen. Im Bereich Anzeige kann unter Display die Option Transparenz reduzieren ausgewählt werden.

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

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
Lazy Blocks
Autor: René A. Da Rin,   Artikel erstellt: am 15.09.2020,   aktualisiert am 13.04.2022



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.

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,

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.

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.

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.