FileMaker FAQ

Autor: Jens Teich

Dies ist eine veraltete Version der FMFAQ, die aktuelle ist hier!



0 Über diesen FAQ

0.1 Was ist das hier?
0.2 Was tun, wenn meine FileMaker-Frage hier nicht beantwortet wird?
0.3 Wie wurde diese HTML-Datei erstellt? Doch hoffentlich mit FileMaker?
0.4 Wie kann ich mich einbringen in diesen FAQ?
0.5 Kann ich die Schriftgröße hier verändern?

1 Allgemeines

1.1 Was ist FileMaker Server?
1.2 Was ist FileMaker Advanced?
1.3 Was ist FileMaker Unlimited (bis FM 6) und Server Advanced (ab FM 7)?
1.4 Was sind Runtimes?
1.5 Was sind globale Felder?
1.6 Was sind Wiederholfelder?
1.7 Wie können verschiedene Versionen des gleichen Datenbanksystems abgeglichen werden?
1.8 Was ist ein Index, wann können und müssen Felder indiziert werden?
1.9 Wie werden Auftragsdokumente (Angebote, Rechnungen, Mahnungen, etc.) in FileMaker erstellt?
1.10 Welche Grenzen hat FileMaker?
1.11 Welche Bücher gibt es zu FileMaker?
1.12 Gelöschte Datensätze zurück holen (von Christian Hahn)

2 Export

2.1 Beim Export sollen Mehrfachwerte nur jeweils einmal erscheinen.
2.2 XML Export: XSLT Stylesheet Basis

3 Auswertungen

3.1 Was sind Teilauswertungsbereiche?
3.2 Was sind Statistikfelder?

4 FileMaker im Netzwerk

4.1 Ist der FileMaker Server notwendig, um eine FileMaker-Datei von mehreren Rechnern gleichzeitig zu nutzen?
4.2 Wie können FileMaker-Dateien ohne FM-Server von mehreren Benutzern parallel bearbeitet werden?
4.3 Ab wievielen Benutzern ist der Einsatz des FileMaker Servers notwendig?
4.4 Der FileMaker Server läuft hier unter Mac OS Classic. Gelegentlich wird alles unendlich langsam, was ist los?
4.5 Mir gelingt es nicht, globale Felder im Serverbetrieb dauerhaft zu ändern, auf das sie beim nächsten Start gleich neu belegt seien.
4.6 Sind Runtimes netzwerkfähig?
4.7 Nach Einrichten einer Firewall geht hier nichts mehr, was ist los?
4.8 Wo werden bei Mehrbenutzeranwendungen zentrale Werte abgelegt, wie z.B. die 'nächste_freie_Rechnungsnummer' oder der 'aktuelle_MwSt_Satz'?

5 Internet

5.1 Wie kann ich meine FileMaker-Datenbank im Internet veröffentlichen?
5.2 Kann FileMaker EMails versenden?
5.3 Was ist der Web Companion (bis FM 6)?
5.4 Welche Schritte sind erforderlich, um eine Datenbank per Instant Web Publishing im Browser abfragen zu können?
5.5 Was ist CDML (bis FM 6)?

6 Skripte

6.1 Können Skripte ausgelöst werden bei Änderung von Feldinhalten?
6.2 Wie merkt sich FileMaker in Skripten die Detaileinstellungen von Such-, Sortier-, Im/Export- und Druckeinstellungen (bis FM 6)?
6.3 Wie kann das Häkchen 'ohne' beim Suchen per Skript gesetzt werden?
6.4 Wie geht Suchen mit Beziehungen?
6.5 Wie können per Skript Werte von einer Tabelle in eine andere übergeben werden?
6.6 Wie verwendet man das aktuelle Datum in Formeln?
6.7 Was bitte sind Skriptparameter (ab FM 7)?
6.8 Was bedeutet eigentlich 'Datensätze ausschließen'? (von Christian Hahn)
6.9 Wie können Datumsbereiche in Skripten gesucht werden?

7 Beziehungen

7.1 Was sind Beziehungen?
7.2 Was sind Ausschnitte / Portale?
7.3 Was ist der Unterschied zwischen Beziehungen und Referenzen?
7.4 Wie kann ich bei Eintrag einer PLZ den Ort automatisch übernehmen, wenn diese Kombination bereits in der Datenbank existiert?
7.5 Kann ich eine Beziehung zu dem jeweiligen aktiven Datensatz bauen?
7.6 Was bedeutet die Meldung 'Diese Beziehung funktioniert nicht ...' bei Definition der Beziehung? (bis Version 6)
7.7 Wie kann man Bezugsdatensätze zählen?
7.8 Warum können Bezugsfelder nicht indiziert werden?
7.9 Eine Beziehung soll auf Inhalte aus mehreren Feldern Rücksicht nehmen, was tun?
7.10 Was ist ein Multilinekey?
7.11 Was ist eine Eins-Eins-Beziehung?
7.12 Wie kann ich eine Beziehung zu einem Datums- oder Zahlenbereich erstellen?
7.13 Was ist eine Beziehung mit Typ Kartesisches Produkt
7.14 Meine erste Beziehung

8 Layout

8.1 Wie kann ich Textfarben ändern in Abhängigkeit von Feldinhalten?
8.2 Wie kann ich Hintergrundfarben in Abhängigkeit von Feldinhalten verändern?
8.3 Können sich Wertelisten ändern in Abhängigkeit von der Auswahl in einer anderen Werteliste?
8.4 Wie erstelle ich ein Listenlayout?
8.5 Ein Layout ist defekt und läßt sich nicht mehr löschen, was ist zu tun?
8.6 Lassen sich Buttons ein- und ausblenden?
8.7 Wie lassen sich Formatierungen von Textfeldern (nachträglich) entfernen?

9 Suchen

9.1 Wie können Datensatzdubletten gefunden werden?
9.2 Wie können leere Feldinhalte gesucht werden?
9.3 Wie kann in Feld Ort sowohl der Wert 'New York' als auch 'Tokio' und 'London' gefunden werden (ODER-Suche)?
9.4 Wie kann ich beim Suchen normale Suchinhalte mit auszuschließenden Inhalten kombinieren?
9.5 Einzelne Datensätze elegant auswählen oder Datensätze markieren (von Christian Hahn)

10 Formeln

10.1 In Formelfelder läßt sich manuell nichts eintragen. Wie kann man das umgehen?
10.2 In Formeln geht das Zahlenformat verloren, was tun?

0 Über diesen FAQ

0.1 Was ist das hier?

FAQ (Frequently Asked Questions - häufig gestellte Fragen) sind Sammlungen von Fragen und Antworten, die in Internetforen wiederholt gestellt werden.

Wer Informationen sucht, kann vor einer Frage in einem Forum prüfen, ob die Frage hier bereits beantwortet ist und damit einer gelangweilten Antwort nach dem Muster 'Wie schon 1000mal besprochen .... bla bla bla' vorbeugen.

Wer Forumsfragen beantwortet kann einfach einen Link weitergeben. Z.B. 'Sieh doch mal www.fmfaq.de/#0.1".

Die Kapitelaufteilung ist absichtlich chaotisch, um einerseits neue Themen immer anfügen zu können, andererseits ältere Links mit Themennummern gleichzeitig nicht totzulegen durch gelegentliche Umnummerierungen.

Vielen Dank für Kommentare und Anmerkungen von Carsten Belling, Christian Hahn, Fabrice Ricker, Florian Rieger, Frank Bronak, Harald Schneider, Jens Krautscheid, Klemens Kegebein, Martin Girschick, Martin Lormes, Manfred Vennes, Nicolaus Busch, Norbert Lindenthal, Oliver Kern und Thomas Bettinger.
top

0.2 Was tun, wenn meine FileMaker-Frage hier nicht beantwortet wird?

Dann bietet sich eine Frage in einem der Onlineforen an, z.B.Oder die Suche in der (englischen) TechInfo Datenbank von FileMaker
Eine deutschsprachige Newsgroup existiert nicht, es gibt lediglich die englische comp.databases.filemaker.

Die Frage in einem dieser Foren wird sehr viel mehr Erfolg haben, wenn ein paar Grundsätze beachtet werden:
  • Ein aussagekräftiger Titel erleichtert vieles, 'HHHIIIIILLLLLFFFFEEEEEEEEEE' ist zwar sehr lautmalerisch, enthält aber absolut keine Information, die auf das tatsächliche Problem hindeuten. Außerdem lieben die 'Beantworter' keine Drängeleien, da sie diese Tätigkeit absolut ehrenamtlich machen.
  • Zur Standardausrüstung jedes Beitrags gehört das Betriebssystem und die FileMaker-Version
  • Vor dem Fragen erstmal die Foren durchsuchen auf ähnliche Probleme oder bereits gepostete Lösungen
  • Für mehrere Fragen auch mehrere Beiträge aufmachen, die Folge der Antworten (Thread) entwickelt sich sonst äußerst unübersichtlich
  • Ruhig mal einen Absatz machen
  • Ungefragte eMails an Profis mit Fragen werden in der Regel nicht beantwortet. Dies wäre aufgrund des großen Mailaufkommens einerseits gar nicht zu leisten, außerdem profitiert das Forum nicht davon
top

0.3 Wie wurde diese HTML-Datei erstellt? Doch hoffentlich mit FileMaker?

Aber selbstverständlich!

Diese Fragen und Antworten liegen alle in einer FileMaker-Datenbank. Neue Themen werden komfortabel nach Eingabe von 'Datensätze -> Neuer Datensatz' eingepflegt.

Das Erstellen dieser HTML-Datei geschieht dann per XML-Export unter Verwendung eines XSLT-Stylesheets.
top

0.4 Wie kann ich mich einbringen in diesen FAQ?

Wer Fragen, Anregungen, Lob, Kritik, Fehlerkorrekturen etc auf dem Herzen hat, mailt mir.

Wer eigene Beiträge einbringen möchte, schickt mir diese ebenfalls. Ich füge sie unter Nennung des Autors in den FAQ ein.

Wer das unangenehme Gefühl der Dankbarkeit für die hier zur Verfügung gestellten Informationen nicht abschütteln kann, schickt eine Weinflasche an meine hier stehende Adresse.
top

0.5 Kann ich die Schriftgröße hier verändern?

Ja, in den Einstellungen des Browsers!

Beim Internet Explorer z.B. unter 'Ansicht -> Schriftgrad'.
top

1 Allgemeines

1.1 Was ist FileMaker Server?

FileMaker Server ist eine Software, die die Arbeit mit FileMaker im Netzwerk mit mehreren Benutzern verbessert.

Sie ist nicht zwingend notwendig, bringt aber deutliche (ab ca 5 Usern lebensnotwendige) Performanceverbesserungen und einige Zusatzfeatures, z.B. die Fähigkeit zeitgesteuerte Sicherungen ausführen zu können. Siehe auch 4.1.

Der FileMaker Server hat nichts mit der Web-Veröffentlichung von Datenbanken zu tun. Dafür sind allein Client und Unlimited (bis FM 6) und Server Advanced (ab FM 7) zuständig(*).

Der FileMaker Server (und nur der) lief unter Linux ausschließlich in der Version 5.5. In aktuellen Versionen ist leider überhaupt keine Linux-Lauffähigkeit vorhanden.

(*) In Version 9 wurde hier die Welt noch einmal durcheinander gewirbelt. Der Stand ist hier, dass der Server Advanced nur für ODBC/JDBC und IWP zuständig ist, der gewöhnliche Server aber das andere Webpublishing übernimmt.
top

1.2 Was ist FileMaker Advanced?

Der Advanced (früher 'Developer') ist nicht zwingend notwendig zum Entwickeln von Datenbanklösungen, stellt aber einige wertvolle Werkzeuge für die Entwicklung zur Verfügung.

Er unterstützt das Umbenennen von Dateien und erlaubt die Erstellung von Runtimeversionen, die auch ohne FileMaker-Version funktionieren.

Weiter können sowohl Runtimes als auch normale Dateien den 'Kioskmodus' zugewiesen bekommen. Sie erscheinen dann ohne FileMaker-Menüleiste und ohne FileMaker-Fenster im Vollbildmodus.

Seit Version 5.5 sind zwei neue Tools dazugekommen, der Skriptdebugger und der Database Design Report.

Der Database Design Report erstellt eine Übersicht über alle Details einer Datenbank wahlweise in eine HTML oder XML-Datei.

Seit Version 7 können mit dem Advanced Custom Functions erstellt werden. Wer mehr davon wissen will besucht mal die CF-Sammlung von Brian Dunning (englisch).

Seit Version 8 gibt es über den Advanved Tooltips, Copy-and-Paste von Skriptfragmenten,Feldern, Tabellen und veränderbare Menuesets.
top

1.3 Was ist FileMaker Unlimited (bis FM 6) und Server Advanced (ab FM 7)?

Bis FM 6:

Jede Wald- und Wiesen-FileMakerversion hat einen eingebauten Webserver dabei. Der heißt Web Companion. Mit diesem kann man FileMaker-Dateien im Internet oder im Intranet veröffentlichen, so dass sie per Browser aufgerufen werden können.

Nun lebt die Firma FileMaker vom Verkauf von Lizenzen. Durch die Browserveröffentlichung kann man das Kaufen von Lizenzen im Prinzip auf eine einzige einschränken.

Daher hat man dem normalen FileMaker-Client eine Einschränkung (=Limit!) eingebaut. Er kann nur 10 unterschiedliche IP-Adressen pro 12 Stunden bedienen.

Wer mehr unterschiedliche User erwartet, muss eine unlimitierte Version, eben den Unlimited erwerben, der beliebig vielen IP-Adressen den Zugriff auf die Datenbank per Browser ermöglicht.

Ab FM 7:

Es gibt keinen Web Companion mehr, der FileMaker Client bietet nur noch die Möglichkeit des Direkten Webpublishing5.4.

Den Unlimited gibt es auch nicht mehr, er wird ersetzt durch einen erweiterten Server, den 'Server Advanced'. Damit wird FileMaker ein Stück erwachsen und wie bei vielen anderen Datenbanken auch ist der Server für die Webveröffentlichung zuständig und nicht ein modifizierter Client.

Ab FM 9:

FileMaker Advanced nur noch für ODBC/JDBC und IWP (Instant Webpublishing). Das CWP (Custom Webpublishing) macht der gewöhnliche Server.
top

1.4 Was sind Runtimes?

Eine Runtime ist ein FileMaker-Datenbanksystem, das ohne FileMaker-Software funktioniert.

Zur Erstellung von Runtimes wird der FileMaker Advanced (1.2) benötigt.

Runtimes haben verschiedene Einschränkungen: Runtimes sind NICHT netzwerkfähig (4.6), auch nicht im lokalen Intranet. Runtimes haben keine ODBC und Webfunktionalität. Runtimes können nur die Dateien öffnen, die beim Binden 'angemeldet' wurden. Ansonsten fehlt der 'Öffnen'-Befehl.

Anwendungsbeispiel: Ein Produktkatalog wird in FileMaker erstellt. Eine Runtime wird mit dem Advanced gebunden und auf CD an die Kunden versendet. Dort läuft die Anwendung auch ohne Installation von FileMaker.

Regelmäßiges Problem an dieser Stelle: Datenbankfunktionen, die Daten schreiben funktionieren nicht auf CDs, da diese nur Lesezugriff erlauben.

Die Runtime muss also vom Anwender auf die Festplatte kopiert werden, wenn z.B. vorgesehen ist, dass die Nutzer Bestellmengen eingeben und dann ein Bestellfax ausdrucken sollen. Außerdem muss der Schreibschutz aufgehoben werden.

Dieser Vorgang kann natürlich durch Installationssoftware automatisiert werden.

Runtimes müssen getrennt für die verschiedenen Betriebssysteme gebunden werden. Nur unter Windows kann man eine Runtime erstellen, die unter Windows läuft. Nur unter Mac OS X kann man eine Runtime für OS X erzeugen.
top

1.5 Was sind globale Felder?

Globalfelder gibt es pro Tabelle nur einmal. Sie ändern sich nicht von Datensatz zu Datensatz. Bis Version 6 hatten sie den verwirrenden Namen Variablenfelder.

Wichtig! Jeder Benutzer hat seinen eigenen Satz globaler Felder. Wenn ein Nutzer ein globales Feld ändert, ist dies nur für ihn selbst sichtbar, andere Nutzer bleiben davon unberührt.

Im Einzelplatzbetrieb haben die globalen Felder beim Start einer Datei die Werte des letzten Dateischließens.

Im Serverbetrieb starten die globalen Felder immer mit den Werten des letzten Schließens im Einzelbenutzermodus. Will man im Serverbetrieb Voreinstellungen von Variablen (bzw. globalen Feldern) ändern, muss man also den Server herunterfahren, die Datei direkt öffnen, die Variable (bzw. das globale Feld) ändern, Datei schließen und den Server wieder hochfahren.

Globale Felder können alle Feldtypen einschließlich Formelfeldern sein.
top

1.6 Was sind Wiederholfelder?

Wiederholfelder sind ein Feature aus den FileMaker-Steinzeitversionen, bevor FileMaker in Version 3 relational wurde. Wird einem Feld die Eigenschaft 'Wiederholfeld mit (z.B.) 10 Wiederholungen' zugewiesen, können hier 10 Werte statt wie gewohnt nur ein Wert eingetragen werden.

Sie sind zunächst unglaublich praktisch und bringen anschließend endlose Probleme. Z.B. lassen sich mit Wiederholfeldern schnell und sehr praktisch einseitige Rechnungsformulare erstellen. Bequem können Summen gebildet werden. Erst viel später stellt man fest, dass die Daten in den Wiederholfeldern wie versiegelt sind. Es ist unmöglich, z.B. zu statistischen Zwecken die Anzahlen einzelner Artikelpositionen auszuwerten. Der Export in ein relationales System ist ein Abenteuer mit einem sehr ungewissen Ausgang.

In den Foren gibt es immer wieder Schlauberger, die sich mit Beispielen profilieren nach dem Motto: Ich verwende Wiederholfelder aber mit großem Erfolg in dem und dem Falle ... Das mag alles sein; aber: für den Anfänger, der seiner Sache nicht komplett sicher ist, heißt die Regel unbedingt: 'Finger weg!!! Erst mit den Möglichkeiten eines relationalen Systems beschäftigen' (7.1).

Unglaublich aber wahr ist, das die Wiederholfelder auch in die Version 7 noch weiterleben, sie sind sogar verbessert worden. So lassen sich jetzt in Formeln die einzelnen Wiederholungen mit eckigen Klammern ansprechen, a[7] liefert die 7. Wiederholung des Feldes a.
top

1.7 Wie können verschiedene Versionen des gleichen Datenbanksystems abgeglichen werden?

Das ist ein ein wenig trauriges Kapitel in unserer Lieblingsdatenbank auch in den aktuellen Versionen.

Die Ausgangssituation: In der Firma liegt das Datenbanksystem auf dem Server und kann von allen im Intranet benutzt werden. Prima. Nun wollen die Außendienstler die Datenbanken auf ihren Laptops dezentral verändern und wieder daheim alles miteinander abgleichen. Ist das mit FileMaker möglich?

Die Antwort ist leider: Andere Datenbanken (z.B. wir müssen es leider bekennen: z.B. Access) kennen die Replikation, die genau dieses Problem löst. FileMaker kennt nichts dergleichen.

Die FileMaker Import- und Exportfunktionen lösen das Problem stets nur in einer Richtung, d.h. die eine Version ist die dominante und die andere wird im Zweifel überschrieben, was bei der Replikation nicht ausreichend ist.

Einen Ausweg bietet die Firma www.syncdek.com, der allerdings recht teuer bezahlt wird.

Ein anderen Ausweg bietet individuelles Skripting, dass allerdings vom Aufwand her nicht unterschätzt werden sollte!
top

1.8 Was ist ein Index, wann können und müssen Felder indiziert werden?

Ein Index ist ein alphabetisches Verzeichnis eines Feldinhaltes.

Eine Telefonnummer zu einem bestimmten Namen suchen ohne Index ist wie Laufen durch alle Straßen der Stadt, Lesen aller Türschilder, Finden des richtigen Namens und Erfragen der Telefonnummer.

Der gleiche Vorgang mit Index ist wie das Suchen in einem Telefonbuch.

FileMaker kann solche Indizes erstellen und speichert sie für den schnellen Zugriff auf bestimmte Feldinhalte.

Um die Frage, ob ein Index erstellt werden soll oder nicht muss der Anwender sich nicht kümmern. Das macht FileMaker selbst. Und in der Regel auch ganz gut.
top

1.9 Wie werden Auftragsdokumente (Angebote, Rechnungen, Mahnungen, etc.) in FileMaker erstellt?

Für die Auftragsdokumente braucht es zwei Tabellen. 'Auftrag' für die Auftragsdokumente selbst und 'Position' für die Auftragspositionen. Beide werden über Beziehungen (7.1) verbunden. Schlüsselfeld ist hierbei auf beiden Seiten ID_Auftrag.

Die Eingabe der Bestellpositionen geschieht in einem Portal (7.2) in der Auftragstabelle, der Ausdruck in einem Listenlayout (8.4) in der Positionstabelle.
top

1.10 Welche Grenzen hat FileMaker?

Siehe Artikel 569 in der TechInfo.

Dateigröße: 8 TeraByte
Tabellen pro Datei 1 Mio.
top

1.11 Welche Bücher gibt es zu FileMaker?

Zu FileMaker 9 gibt es bis jetzt nur Englisches, dafür aber sehr empfehlenswert: Using FileMaker 9.
top

1.12 Gelöschte Datensätze zurück holen (von Christian Hahn)

Schnell ist es passiert, dass man Datensätze gelöscht hat und man es sich wenig später anders überlegt. Aber, gelöschte Datensätze sind erbarmungslos weg. Da wäre es schön, wenn man so etwas Ähnliches hätte wie das Verschieben von Dateien in den Windows-Papierkorb (aus dem man gelöschte Dateien wieder herstellen kann).

Vorschlag: Wir legen uns ein leeres Doppel unserer Datenbank an und nennen es z.B. "Urne". Alle zu löschenden Datensätze werden erst in die Urne transportiert, bevor sie dann in der Haupt-Datenbank endgültig gelöscht werden.

In unserer Haupt-Datenbank erfolgt das Löschen von Datensätzen ab sofort nicht mehr über den Menü-Befehl "Alle Datensätze löschen..." bzw. die Befehlsschaltfläche, sondern wir legen uns dafür eine eigene Taste im Kopfteil des Layouts an. Das Skript, das von dieser Taste ausgelöst wird, sollte nun allerdings nicht heißen: "Exportiere alle aufgerufenen Datensätze in die Datei Urne", weil bei jedem Export die Zieldatei Urne überschrieben würde und so die dort bereits vorhandenen Datensätze endgültig verloren gingen (es sei denn, man will das genau so).

Stattdessen bekommt die Datei Urne ein Skript "Importiere alle (aufgerufenen) Datensätze aus der Haupt-Datenbank". Im Skript in der Haupt-Datenbank wird also zunächst das Skript in Datei Urne aufgerufen und dann werden in der Haupt-Datenbank alle aufgerufenen Datensätze gelöscht.

Erweiterungsmöglichkeiten:
Wenn man mehrere verschiedene Dateien in seinem Datenbank-Projekt hat, muss man nicht für jede Datenbank-Datei eine eigene Urnen-Datei anlegen, dafür reicht eine Datei aus. Diese Urne muss dann allerdings sämtliche Felder aller betreffenden Haupt-Dateien enthalten (und ich fürchte, dass man diese Felder von Hand anlegen muss).

Für die Automatisierung des Imports in die Urnen-Datei müsste dann für jede beteiligte Haupt-Datei wegen der benötigten Importfolge ein eigenes Import-Skript angelegt werden. In den beim Import in die Datei Urne neu angelegten Datensätzen bleiben dann die Felder, die zu den jeweils anderen beteiligten Haupt-Dateien gehören, einfach leer.

Nun bekommt die Datei Urne noch einige weitere Felder, wie z.B. -LöschIndex(Zahl) - LöschDatum(Datum), - LöschUhrzeit(Zeit), - HerkunftsDatei(Text).

Auf diese Weise ließen sich die Datensätze in der Datei Urne leicht nach Gruppen unterscheiden und das Zurückholen der Datensätze würde einfacher. Die Automatisierung dieser zusätzlichen Felder geht einfach. Dazu bedenke man, dass die gerade frisch in die Urne importierten Datensätze zunächst alleine in der Auswahl stehen, sodass man mit dem Skript-Befehl "Ersetzen" / "Durch berechnetes Ergebnis ersetzen:" alle importierten Datensätze auf einmal mit einem passenden Inhalt versehen kann, so z.B. im Feld LöschDatum mit der Funktion "Heute". (LöschUhrzeit ist lohnend, weil man so Löschvorgänge am selben Tag unterscheiden kann.) Der Skript-Befehl "Ersetzen" erfasst nur die gerade aufgerufenen Datensätze.

Das eigentliche Wiederherstellen der Datensätze in der ursprünglichen Haupt-Datei kann man natürlich von Hand machen. Für die Automatisierung braucht man wiederum ein Skript in der Datei Urne, in dem eine Abfrage mit passenden Merkmalen konstruiert wird, und ein Skript in der Haupt-Datei, das die ausgewählten Datensätze importiert.

Um dieses Verfahren auf FM 7 anzuwenden, ersetze man einfach den Begriff Datei durch Tabelle.
top

2 Export

2.1 Beim Export sollen Mehrfachwerte nur jeweils einmal erscheinen.

Nehmen wir an, wir wollen aus unserer Adresstabelle eine PLZ-Liste exportieren. Jede PLZ soll natürlich nur einmal erscheinen.

Dazu muss die Adresstabelle nach PLZ sortiert werden.

Dann reicht beim Exportieren das Klicken des Buttons 'Auswerten nach' und dann die Auswahl 'PLZ'!
top

2.2 XML Export: XSLT Stylesheet Basis

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:fmp="http://www.filemaker.com/fmpxmlresult"
exclude-result-prefixes="fmp">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>

<xsl:template match="fmp:FMPXMLRESULT">
<root>
<xsl:apply-templates/>
</root>
</xsl:template>

<xsl:template match="fmp:ROW">
<record>
<xsl:value-of select="fmp:COL/fmp:DATA"/>
</record>
</xsl:template>

<xsl:template match="text()"/>

</xsl:stylesheet>


Dieser Code kann als Stylesheet für den XML Export dienen. Einfach in einer Textdatei speichern und beim Export angeben. Er verwendet die Daten aus dem ersten FileMaker Feld in der Exportfolge, das nächste Feld erreicht man mit COL[2].
top

3 Auswertungen

3.1 Was sind Teilauswertungsbereiche?

Teilauswertungsbereiche sind Layoutbereiche, die folgendes z.B. ermöglichen:

Eine Datenbank enthält pro Tag einen Datensatz mit Verkaufsmengen. Ein Auswertungsbericht soll nach Monaten strukturiert sein.

Teilauswertungsbereiche ermöglichen sowohl das Einschieben der Monatsüberschriften als auch das nachgelagerte Einschieben der Monatssummen. Diese wiederum können sehr komfortabel mit Auswertungsfeldern erzeugt werden.

Die Inhalte dieser Teilauswertungsbereiche sind nur im Seitenansichtmodus sichtbar.

Beim Anlegen muss ein Feld angegeben werden bei 'wenn sortiert nach ...'. Der Teilauswertungsbereich funktioniert anschließend nur, wenn die Datensätze auch nach diesem Feld sortiert sind.

In unserem Beispiel kann der Teilauswertungsbereich kein sinnvolles Ergebnis liefern, wenn die Datensätze nicht nach Datum, sondern zum Beispiel nach Umsatz sortiert sind.
top

3.2 Was sind Statistikfelder?

Eine sehr komfortable Sache sind die Statistikfelder.

Beispiel:

Im Kegelverein 'Hau wech die Kugel' führt der Statistikbeauftragte Hein Flach ein FileMaker-Datenbank mit den Feldern Datum, Name und Score.

Nach jedem Abend erzeugt er für jeden Spieler einen Datensatz, trägt das Tagesdatum und den erzielten Score ein.

Nun sollen die Daten alternativ nach Name und nach Datum sortiert ausgewertet werden mit Teilsummenbildung. Das Tolle ist: das alles geht mit einem einzigen Statistikfeld und einem einzigen Layout. Nur wie?

Hein erstellt ein Statistikfeld ausw_score mit der Option 'Summe von Score'. Die Option 'laufende Summe' bleibt ungeklickt.

Dann erstellt Hein das eine(!) Layout für die beiden(!) Auswertungen, indem er zunächst ein normales Listenlayout (8.4) anlegt und unterhalb des Datenbereichs zwei Teilauswertungsbereiche (3.1) einfügt. Den einen 'wenn sortiert nach Datum', den anderen 'wenn sortiert nach Name'.

Für die Gesamtwerte fügt er noch einen nachgestellten Auswertungsbereich ein.

Jetzt wird unser (einziges!) Auswertungsfeld in alle drei Auswertungsbereiche gelegt. Zur besseren Orientierung wird für jedes Version eine andere Textfarbe gewählt.

FERTIG! Unglaublich aber wahr.

Ab in den Blätternmodus: Kurze Enttäuschung, keine Spur von den Teilauswertungen

Kann ja auch nicht. Die Datensätze müssen sortiert sein. Wenn das der Fall ist, wird bei Sortierung nach Name der Teilauswertungsbeich 'wenn sortiert nach Name' aktiv und entsprechend beim Datum. Bei Versionen 9 und älter sind die Teilauswertungsbereiche nur im Seitenansichtmodus sichtbar.

Hein geht noch mal raus, klettert auf den Deich und zündet sich ein Pfeifchen an. Das hat er sich wirklich verdient!
top

4 FileMaker im Netzwerk

4.1 Ist der FileMaker Server notwendig, um eine FileMaker-Datei von mehreren Rechnern gleichzeitig zu nutzen?

Nein.

Der ganz normale FileMaker Client (=normale FM-Version) hat eine eigens eingebaute Netzwerkfunktionalität.

FM 6:

Um diese zu nutzen, muss unter Bearbeiten -> Voreinstellungen -> Programm -> Allgemein ein Netzwerkprotokoll eingestellt sein. Meist wohl TCP/IP.

FM 7/8:

Aktiviert wird es unter Bearbeiten -> Sharing -> FileMaker Netzwerk ... Weiter ist wichtig, das ein Konto mit der erweiterten Berechtigung zum Netzwerkzugriff ausgestattet sein muss. Das ist in der Standardeinstellung nicht einmal für den Admin gegeben.

Was ist der FileMaker Server siehe 1.1.
top

4.2 Wie können FileMaker-Dateien ohne FM-Server von mehreren Benutzern parallel bearbeitet werden?

bis FM 6:

Zunächst muss unter 'Datei/ Ablage -> Sharing' ein Kreuz bei 'Mehrbenutzer' gesetzt werden.

Ab FM 7 haben die Dateien selbst keine Eigenschaft 'Sharing' mehr, nur der Client selbst kann zum Host erklärt werden unter Bearbeiten -> Sharing -> FileMaker Netzwerk

Dann wird die Datei von dem ersten Benutzer ganz normal über 'Datei/ Ablage -> Öffnen' geöffnet. Dieser Rechner wird damit automatisch zum Server für die anderen Benutzer.

ACHTUNG: Dies sollte unbedingt der Rechner sein, auf dessen lokaler Platte auch die FM-Dateien liegen. Alles anderes führt zu einem Mehrfachen an Netzwerkverkehr und entsprechenden Performance-Einbußen.

Ab dem zweiten User wird im Öffnen-Dialog nicht die Datei direkt ausgewählt, sondern der 'Host'-Button geklickt, der den Server des ersten Benutzers anzeigt und die dort bereitgestellte Datei.

Ab FM 7 muss hierfür das jeweilige Konto mit dem erweiterten Recht für den Netzwerkzugriff ausgestattet sein. In der Standardeinstellung ist das nicht einmal dem Admin gestattet.

Werden mehrere Dateien parallel genutzt, sollte in einem Startskript das sofortige Öffnen aller notwendigen Dateien veranlasst werden. Andernfalls besteht die Gefahr, das mehrere Rechner versuchen, Server von Dateien zu werden und sich gegenseitig blockieren.
top

4.3 Ab wievielen Benutzern ist der Einsatz des FileMaker Servers notwendig?

Daumenwert ist die Zahl von 5 Benutzern.

Werden die Datenbanken aber nur gelegentlich genutzt wird, kann es auch mit mehr Benutzern gut gehen.

Andersherum kann auch schon mit weniger Usern der Wunsch nach einem Server aufkommen. Insbesonere der Client, der den Serverjob tut (4.2), hat einige Einbußen, wenn andere Benutzer intensiv auf die Datenbanken zugreifen.

Seit Version 6 gibt es feste Grenzen für die Anzahl der User:
... bei FileMaker 6 wird ab 10 gleichzeitigen Nutzern ein Server benötigt
... ab FileMaker 7 / 8 wird schon ab dem 6. Nutzer der Server zwingend erforderlich
top

4.4 Der FileMaker Server läuft hier unter Mac OS Classic. Gelegentlich wird alles unendlich langsam, was ist los?

Bis FM 6, da FM 7 nicht mehr unter OS 9 läuft:

Das klassische Mac OS kennt keine Dienste, die brav parallel im Hintergrund laufen, es kann immer nur einen Job gut bedienen.

Wenn auf dem der FileMaker Serverrechner noch andere Programme laufen und der FileMaker Server nicht im Vordergrund läuft, wird die Performance sehr unbefriedigend sein.
top

4.5 Mir gelingt es nicht, globale Felder im Serverbetrieb dauerhaft zu ändern, auf das sie beim nächsten Start gleich neu belegt seien.

Im Serverbetrieb starten die globalen Felder immer mit den Werten des letzten Schließens im Einzelbenutzermodus. Will man im Serverbetrieb Voreinstellungen eines globalen Feldes ändern, muss man entweder den Server herunterfahren, die Datei direkt öffnen, die Variable ändern, Datei schließen und den Server wieder hochfahren.

Als weitere Möglichkeit bietet sich die Initialisierung der Globlalfelder im Startscript an.
top

4.6 Sind Runtimes netzwerkfähig?

Nein.

Jedenfalls nicht in den aktuellen FileMaker-Versionen. Das war bis zu Version 3/4 anders.

Mit späteren, aktuelleren FileMaker-Runtimes (1.4) lässt sich der Lizenzkauf nicht vermeiden.

Ausweg bietet dazu das Erstellen einer Browserlösung. Siehe hierzu 5.1.
top

4.7 Nach Einrichten einer Firewall geht hier nichts mehr, was ist los?

Port 5003 muss offen sein für UDP und TCP.

Bei DNAT und FileMaker 5.x/6 darf allerdings 5003 UDP nicht 'offen' sein!
Bei 3/4.x dagegen müssen UDP Datagramme immer durchgelassen werden.
top

4.8 Wo werden bei Mehrbenutzeranwendungen zentrale Werte abgelegt, wie z.B. die 'nächste_freie_Rechnungsnummer' oder der 'aktuelle_MwSt_Satz'?

Auf keinen Fall können hier globale Felder (1.15) zur Anwendung kommen, da sie ja für jeden Benutzer getrennt zur Verfügung gestellt werden.

Nötig ist eine zentrale Tabelle, die etwa 'Global' heißen kann. Sie enthält stets nur einen Datensatz. Die gewünschten zentralen Felder werden hier als normale Datenfelder (Text, Zahl, etc.), nicht als Globalfelder angelegt.

Abgefragt werden können diese Felder bequem über ...
bis FM 6: ... Eins-Eins-Beziehungen (7.11)
ab FM 7: ... per Beziehung mit Zuordnung Kartesisches Produkt (7.13)
top

5 Internet

5.1 Wie kann ich meine FileMaker-Datenbank im Internet veröffentlichen?

(1) Statisches Web Publishing (alle FM-Versionen)

Ändern die Inhalte einer FileMaker sich nur gelegentlich und sind keine dynamischen Zugriffe (z.B. Suchfunktionen) erforderlich, kann man sehr schlank zu einer Lösung kommen.

Man erstellt Formelfelder, die die Textinhalte mit HTML-Tags umgeben, etwa wie

"<p>" & textfeld & "</p>"


Dann werden die Formelfelder in eine Textdatei exportiert und fertig ist die HTML-Datei.

Seit FileMaker 6 stellt der XML-Export ein Werkzeug dar, mit dem das statische Webpublishing sehr elegant unterstützt werden kann. Statt der oben skizzierten Formelfelder wird ein XSLT-Stylesheet erstellt, das den FileMaker-XML-Export in das gewünschte HTML transformiert. Dieses Verfahren erfordert einige Einarbeitung insbesondere in XSLT, bietet dann aber nahezu unbegrenzte Möglichkeiten, um statische Daten aus FileMaker zu generieren. Nach dieser Methode ist dieses FAQ-Dokument erstellt.

Das statische Web Publishing kann mit jedem denkbaren Webserver durchgeführt werden, da keine dynamischen Zugriffe des Webservers auf die FileMaker-Datenbank erfolgen und nur statische HTML-Seiten seitens FileMaker erzeugt werden. Anders die beiden folgenden Methoden (2) und (3).

(2) Instant Web Publishing (5.4)

Hier werden Träume wahr. FileMaker verspricht, mit einem Mausklick Datenbanken dynamisch in das Internet stellen zu können. Und dort sollen die dann genau so aussehen, wie sie es in der 'normalen' Version tun.

Es wäre zu schön, wenn das so wäre. Schon bei der Darstellung in der Webvariante zeigen sich deutliche Unterschiede zur Originalfassung.

Und die Feststellung, dass meist so gut wie kein Skript mehr funktionstüchtig ist (bis FM 6) stellt dann in der Regel das ko-Kriterium dar.

Unter FM 7 sind die Möglichkeiten des Instant Web Publishing allerdings noch einmal deutlich erweitert worden, immer mehr Skriptbefehle sind jetzt web-tauglich.

In den aktuellen Versionen ist ein Server Advanced für den professionellen Einsatz von IWP nötig.

(3) Custom Web Publishing

Mit einer individuell erstellten Weblösung bleiben dann letztendlich tatsächlich keine Wünsche mehr offen. Der Weg dahin ist allerdings nicht zu unterschätzen. Der Aufwand ist gewöhnlich höher als die eigentliche Erstellung der Originaldatenbank.

Für die Kommunikation mit der FileMaker-Datenbank können bis FM 6 die FileMaker-eigenen CDML-Marken (5.5) oder das universellere aber etwas komplizierter zu handhabende XML verwendet werden.

Wie es geht ist unter www.filemakerprofis.de im CDML- und XML-Tutorial beschrieben. Mit dem normalen Client liefert FileMaker keine Hilfefunktionen oder Handbücher zum Custom Web Publishing aus, obwohl die Funktionen vorhanden sind. Das Handbuch beschreibt ausschließlich das Instant Web Publishing. Das entsprechende Handbuch zum Custom Publishing liegt ausschließlich der Developerversion bei.

Die CDML-Unterstützung wurde mit Version 7 eingestellt.

Wer sich mit PHP auskennt, kann auch mit dem PHP-Assistenten einfache Seiten automatisch und durch Anpassung beliebig komplizierte Seiten mit PHP bauen.
top

5.2 Kann FileMaker EMails versenden?

Der Skriptbefehl 'Email senden' ist in der Lage, den Standardmailclient aufzurufen und Daten (Adressaten-EMail, Textkörper, usw.) aus der Datenbank in ein neues EMail zu übertragen. Seit Version 10 können auch direkt SMTP Emails versendet werden.

Vorsicht, nicht alle EMailclients gehen mit allen FM-Versionen. So kann der Mac Outlook Express erst seit FM-Version 5.5 nutzen.

Das EMail kann entweder verdeckt in den Ausgangsordner des Mailclients gelegt werden, oder der EMail-Client wird in den Vordergrund gebracht, um das EMail noch zu bearbeiten.

Die EMails sind reine Text-EMails, es können also keine Formatierungen übernommen werden. Abhilfe schaffen hier PlugIns.

Wird Outlook Express als EMail-Client eingesetzt sollten dort praktischerweise folgende Einstellungen (Extras -> Optionen) gesetzt werden, um die ausgehenden Mails nochmal kontrollieren zu können:

a) Reiter "Allgemein":
Bei 'beim Start von Outlook Express Nachrichten senden und empfangen' soll das Häkchen NICHT gesetzt sein (auch aus Sicherheitsgründen), sonst kann man die Mails im Postausgang"-Ordner nicht mehr sehen, weil sie alle ohne Kontrolle weg sind.

b) Reiter "Sicherheit"
Bei 'Warnung anzeigen, wenn andere Anwendungen...' soll das Häkchen NICHT gesetzt sein -- sonst fragt Outlook Express bei der Übernahme von JEDER Mail aus Filemaker, ob es rechtens ist.
top

5.3 Was ist der Web Companion (bis FM 6)?

Der Web Companion ist ein seit Version 4 und bis Version 6 mit dem FileMaker Pro und FileMaker Pro Unlimited-Versionen (1.3) ausgeliefertes PlugIn, das den FileMaker-Client als Webserver einsetzbar macht.

FileMaker kann dabei alleiniger Webserver sein, oder parallel zu einem anderen Webserver speziell die FileMaker-Dateibabfragen bearbeiten. Im zweiten Fall sorgt der auch von FileMaker zur Verfügung gestellt Web Server Connector (WSC) dafür, dass die FileMaker-Anfragen zum Web Companion geleitet werden und die anderen Anfragen nicht.

Da FileMaker Pro und Unlimited unter Windows und Mac OS laufen und nicht unter Unix/Linux ist man bei der Wahl eines Providers, der FileMaker-Hosting anbietet, stark eingeschränkt.

Seit Version 7 wird die Funktionalität des Web Companion vom Server Advanced übernommen.
top

5.4 Welche Schritte sind erforderlich, um eine Datenbank per Instant Web Publishing im Browser abfragen zu können?

Bis FM 6:

(1) Konfigurieren des Web Companion (5.3): Bearbeiten -> Voreinstellungen -> Programm -> PlugIns -> Web Companion -> konfigurieren. Direktes Web Publishing aktivieren. Homepage: eingebaut. Port: 80 oder falls ein weiterer Webserver auf dem Rechner läuft 591.

(2) Datei freigeben: Datei öffnen und unter Datei -> Sharing den Web Companion aktivieren.

(3) Aufruf im Browser: Eingabe von 'localhost' in der Browserzeile, falls Port 80 unter (1) gewählt wurde, bzw. 'http://localhost:591' im anderen Fall.

Ab FM 7:

Konfiguration unter Bearbeiten -> Sharing -> Instant Web Publishing,
Einrichten eines Kontos mit Berechtigung zum Webzugriff.
top

5.5 Was ist CDML (bis FM 6)?

Das Internet spricht HTML. HTML-Dateien sind Textdateien, die sogenannte Tags für Textformatierungen enthalten: <b> steht für Fettdruck, <table> beginnt eine Tabelle

CDML steht für Claris Dynamic Markup Language und stellt FileMaker-spezifische Tags zur Verfügung, die im HTML-Text vom Web Companion (5.3) durch FileMaker-Datenbankinhalte ersetzt werden.

Z.B. liefert die CDML-Marke [FMP-Field: Bestellposition] den Inhalt des Feldes 'Bestellposition' .

Zum Erlernen von CDML sind also manuelle Kenntnisse für die HTML-Erstellung gefragt und zusätzlich die CDML-Tags. Darüberhinaus gibt es eine Abfragesyntax, die dem Web Companion mitteilt, welche Datenbankinhalte geliefert werden sollen. Es bestehen Such- und Sortiermöglichkeiten.

Z.B. liefert ein Link

<a href='FMPro?-db=test.fp5&-lay=web&-format=test.html&-findall'>Klick hier</a>


alle Datensätze der Datei test.fp5 und daraus alle Feldinhalte des Layouts web und stellt diese auf der HTML-Seite test.html dar, die vermutlich mit CDML-Tags gespickt ist.

Die offizielle FileMaker-CDML-Referenz gibt es zum Download unter http://www.filemaker.com/downloads/hqx/cdml_web_tools.zip.

Die Unterstützung für CDML wurde mit FileMaker-Version 7 eingestellt.
top

6 Skripte

6.1 Können Skripte ausgelöst werden bei Änderung von Feldinhalten?

Ja. Seit Version 10 mit den Scripttriggern.
top

6.2 Wie merkt sich FileMaker in Skripten die Detaileinstellungen von Such-, Sortier-, Im/Export- und Druckeinstellungen (bis FM 6)?

FileMaker merkt sich bei neu erstellten Skripten den zuletzt manuell durchgeführten Vorgang mit seinen Details.

Werden Skripts geändert mit einem 'merkfähigen' Skriptbefehl, erscheint beim Skriptschließen eine Dialogbox, die für die jeweiligen Befehle die Optionen 'Belassen' oder 'Ersetzen' anbietet. Belassen verändert nichts und Ersetzen überschreibt die gespeicherten Einstellungen mit den letzten gewählten Einstellungen überschrieben.

Bei den Befehlen Suchen(), Suchen aktivieren() und Sortieren() wird das nur getan, wenn die Option 'Übernehmen' gesetzt ist.

Beim Drucken merkt sich der Befehl Drucker einrichten[] auf dem PC und Papierformat[] auf dem Mac die Druckeinstellungen, z.B. die Einstellung Hoch-/ Querformal. Der gewählte Drucker selbst kann leider nicht gemerkt werden.

Beispiel: Es sollen Sortierskripte für die Felder Name, Vorname und Ort einer Adressliste erstellt werden.

Vorgehensweise:
  • Manuell nach Name sortieren,
  • Ein Skript sortiere_Name erstellen mit dem Befehl Sortieren(Übernehmen), das Übernehmen wird mit einem Häkchen gesetzt.
  • Manuell nach Vorname sortieren,
  • das obige Skript duplizieren, umbenennen, einmal aufrufen und beim Schließen die Option Sortierfolge Ersetzen wählen
  • Vorgang für alle weiteren Felder wiederholen


Seit FM 7 werden die Kriterien der vorgenannten Befehle nicht mehr versteckt gespeichert, sondern sind beim jeweiligen Befehl im Skriptmaker auswählbar.
top

6.3 Wie kann das Häkchen 'ohne' beim Suchen per Skript gesetzt werden?

Das tut der Skriptbefehl 'Datensätze ausschließen'!
top

6.4 Wie geht Suchen mit Beziehungen?

Wenn zu suchende Datensätze gleichzeitig Bezugsdatensätze einer Beziehung sind, kann man sie sehr bequem über den Skript-Befehl

Gehe zu Bezugsdatensatz[Auswählen]


suchen.

Achtung! Das Häkchen bei 'Auswählen' muss gesetzt sein, sonst ist alles für die Katz.

Sollen beispielsweise alle Ansprechpartner einer Firmendatenbank in der Datenbank 'Person' dort in einer Liste angezeigt werden, kann die Suche in einer einzigen Skriptzeile erledigt werden.

Der Küstentratsch berichtet regelmäßig von Fällen, wo das viel komplizierter gelöst wird. Gesuchte Fimen_ID in andere Datei übertragen (Copy & Paste), Suchen aktivieren, Berechnetes Ergebnis einsetzen, Suchen. Oder so. Schnell vergessen. Hat keiner gesehen.
top

6.5 Wie können per Skript Werte von einer Tabelle in eine andere übergeben werden?

Alles nur FM 6:

Beispiel: In der Adressdatei soll per Button (Skript) eine neue Bestellung für den ausgewählten Kunden erzeugt werden.

In der Bestelldatei wird ein Variablenfeld (1.5) v_aktive_Adresse angelegt, das als Zwischenablage für die Adress_ID dient. Aber wie kommt die ID der ausgewählten Adresse in die andere Datei? Das geschieht mit HIlfe einer Eins-Eins-Beziehung (siehe auch 7.11)

Dazu benutzen wir in jeder Datei ein Hilfsfeld (Formel Typ Zahl) _Eins = 1. Dies gehört zur Standardausrüstung jeder FileMaker-Datei.

Diese beiden _Eins-Felder werden mit einer Beziehung verbunden. Diese Beziehung ist stets gültig, sobald es Datensätze in beiden Dateien gibt. Sie verbindet quasi jeden mit jedem Datensatz und kann zum Ansprechen von Variablenfeldern genutzt werden.

Der eigentliche Übertragungsvorgang geschieht mit der Skriptzeile

Feld angeben[ Eins_Beziehung::v_aktive_Adresse ; ID ]


Ende Alles nur FM 6:

Seit FM 7 benutzen wir hierfür Skriptparameter 6.7, seit FileMaker 8 auch $-Variablen.
top

6.6 Wie verwendet man das aktuelle Datum in Formeln?

Bis FM 6:

Dazu stehen die zwei Funktionen Heute() und Status(AktuellDatum) zur Verfügung.

Heute() wird bei Start der Anwendung berechnet und im weiteren gespeichert. Das klingt sehr praktisch, da zu gespeicherten Feldern z.B. Beziehungen gebaut werden können, birgt aber Fallen. Wenn eine Datei wächst, in der der Heute()-Befehl in Formelfeldern verwendet wurde, verlangsamt dies den Start der Datei sehr stark, da quer durch die Datei sämtliche Formelwerte neu berechnet werden.

Als weiteres Problem liefert Heute() falsche Werte, wenn FileMaker über Nacht läuft und das Datum wechselt.

Konsequenterweise gibt es Heute() in FM 7 nicht mehr.

Besser ist die Verwendung von Status(AktuellDatum). Diese Statusfunktion kann zwar nicht gespeichert und indiziert (1.8) werden, ist dafür aber stets aktuell und verlangsamt den Dateistart nicht. WICHTIG: Unter Speicheroptionen ankreuzen: 'Ergebnisse nicht speichern - nur berechnen wenn benötigt'!

Ab FM 7:

Verwenden wir die Statusfunktion

Hole( SystemDatum )


Soll sie in einer Textformel verwendet werden, muss es heissen

LiesAlsText( Hole( SystemDatum ))

top

6.7 Was bitte sind Skriptparameter (ab FM 7)?

Endlos geärgert hat uns immer folgende Situation (Stand FileMaker 6.0 anno MMIII):

Wir haben viele Buttons, die alle fast das gleiche tun, z.B. ein Suchbutton mit der Aufschrift 'A', der alle Adressen mit A... anzeigt per entsprechendem Skript. Das wollten wir natürlich auch für 'B', 'C' usw.

Wir haben uns das Hirn zermartert, wie wir herausbekommen konnten, welcher Button geklickt wurde, um alles mit einem einzigen Skript zu lösen. Letztlich haben wir aufgegeben und 26 einzelne fast identische Skripts geschrieben.

Das hat nun ein Ende. Tatah! Dank Skriptparameter können wir bei Definition der Buttons einen Parameter mitgeben, in unserem Beispiel also etwa einen bestimmten Buchstaben. Aber das ist nicht alles. Alle potenten Möglichkeiten des Formeleditors stehen zur Verfügung.

Abgerufen wird der Paramter im Skript mit der Statusfunktion Hole( SkriptParameter ). Für unser obiges Beispiel reicht also ein (1!) Skript nach dem Bauplan:

SuchenModus aktivieren
Feldwert setzen[ Suchfeld ; Hole(ScriptParameter) ]
Ergebnismenge suchen
top

6.8 Was bedeutet eigentlich 'Datensätze ausschließen'? (von Christian Hahn)

Ich habe das einmal einem Kunden folgendermaßen zu veranschaulichen versucht
(übrigens erfolgreich):

Er möge sich doch einmal vorstellen, alle seine Datensätze stünden als Liste auf einem Blatt Papier. Wenn er nun einen oder mehrere Datensätze davon 'ausschließt', dann sei das etwa so, als ob er diese Datensätze auf die Rückseite seines Blattes schöbe.

Wenn er das Blatt nun umdreht, dann sähe er natürlich nur die ausgeschlossenen Datensätze, während nun alle übrigen Datensätze auf der Rückseite stünden. Er könne nun das Blatt immer wieder hin und her drehen und jedes Mal entspräche das dem Befehl 'Ausschluss umkehren'.

Das ist das schön Praktische an Filemaker, jedes Mal, wenn ich eine Auswahl aus Datensätzen treffe, ob mit einer klassischen Abfrage oder mit dem Befehl 'Datensatz ausschließen', die nicht ausgewählten Datensätze sind nicht in den Tiefen des Computers vergraben, nein, sie stehen als gleichsam negative Auswahl in einer zweiten Ansicht zur Verfügung, eben als 'Ausschluss', den man mit 'Ausschluss umkehren' in die Ansicht bringen kann (ich drehe mein Blatt einfach um).
top

6.9 Wie können Datumsbereiche in Skripten gesucht werden?

Manuell kann man Datumsbereiche mit der Eingabe 1.12.2004...31.12.2004 suchen. Wenn man versucht, so etwas zu skripten, türmen sich unerwartet schwer übersteigbare Hürden auf.

1. Holzweg: der Versuch eine Formel zu bauen nach dem Bauplan Datum_von & "..." & Datum_bis führt zu nichts. Warum? Weil Formelfelder im Suchenmodus leer sind. Kann man ja auch drin suchen. Achso.

Müssen also Globalfelder her. Das führt direkt zum

2. Feldwert_setzen[ SuchDatumsFeld ; .<.Formel_mit_Globalen_DatumsFeldern> ].

Jetzt noch die Umwandlung der Datumsangaben in Texte eingebaut und dann präsentieren wir stolz unser Ergebnis:

Suchen aktivieren[] // Aufpassen, das die Klammer leer ist
Feldwert setzen[ Suchfeld ; DatumZuText( v_Datum_von) & "..." & DatumZuText( v_Datum_bis ) ]
Suchen[] // wieder auf leere Klammern achten
top

7 Beziehungen

7.1 Was sind Beziehungen?

Beziehungen verbinden Tabellen. Bis FM 6 war das synonym mit Dateien. Für die Beziehung wird in jeder der beiden verbundenen Tabellen ein Schlüsselfeld benannt, das bei Abfrage der Beziehung in beiden Tabellen miteinander verglichen wird.

In der Adresstabelle 'Firma' kann es pro Firma mehrere Ansprechpartner geben. Für die Ansprechpartner legen wir eine Extratabelle 'Person' an.

Jede Tabelle hat ein Schlüsselfeld. In der 'Firma' heißt es Firma_ID und in der 'Person' Person_ID. Das sind die Primärschlüssel.

Jetzt begeben wir uns (in Gedanken) zur Tabelle 'Firma' und fragen, ob wir einen oder mehrere Bezugsdatensätze sehen könnten. Leider können es mehrere Personen sein. Das ist immer schlecht. Wenn das von beiden beteiligten Tabellen aus passiert braucht es eine weitere Hilfstabelle, genannt Kreuztabelle.

Dann gehen wir (wieder in Gedanken) zur Tabelle 'Person' und schauen in Richtung der 'Firma'. Und wir sehen (zum Glück) immer nur eine bestimmte Firma.

Für die 'Person' bedeutet das, dass wir außer der Person_ID auch noch die Firmen_ID dort als sogenannten Sekundärschlüssel notieren. Das Feld Firmen_ID gibt es also in beiden Tabellen.

(FM 6:) In der Datei 'Firma.fp5' öffnen wir 'Datei/Ablage -> Beziehungen definieren', erstellen eine neue Beziehung, wählen die Datei 'Person.fp5' als Bezugsdatei und wählen als Schlüsselfeld auf beiden Seiten der Beziehung das Feld Firma_ID.

Seit FM 7 verbinden wir die Schlüsselfelder bequem per Drag and Drop im Beziehungsdiagramm.

Fertig.

Selbstbeziehungen sind Beziehungen einer Tabelle mit sich selbst.

Übrigens ist eine 'Beziehungskiste' etwas ganz anderes. Das ist nämlich, wenn er an die Schlafzimmertür klopft und sie ihn nicht hinausläßt!
top

7.2 Was sind Ausschnitte / Portale?

Ausschnitte, auch Portale genannt, sind 'Fenster in eine andere Tabelle'.

Ein Ausschnitt ist immer fest genau einer Beziehung (7.1) zugeordnet. Eine Beziehung ordnet einem Datensatz bestimmte Datensätze einer anderen Tabelle zu. Z.B. alle Ansprechpartner einer Kundenfirma.

Diese Beziehungsdatensätze können in einem Ausschnitt listenartig angezeigt werden.

(FM 6:) Die Sortierung der gezeigten Datensätze richtet sich nach der Sortierung der zugrundeliegenden Beziehung.

(FM 7:) Die Sortierung kann für jedes Portal getrennt gewählt werden.

VORSICHT: Sortierungen eines Ausschnitts können die Datenbank stark verlangsamen!

Portale sind für die Bildschirmanzeige und -eingabe gedacht. Sie sind in der Regel nicht geeignet zum Drucken. Der Ausdruck erfolgt in einem Listenlayout (8.4) in der verknüpften Tabelle.

In einem Ausschnitt können neue Datensätze in der Bezugstabelle angelegt werden, wenn in der Beziehungsdefinition ein Häkchen gesetzt ist bei 'Erstellung von Bezugsdatensätzen zulassen'. Dann erscheint immer eine zusätzliche leere Ausschnittzeile. Ein Eintrag hier legt in der anderen Tabelle (!) eine neuen Datensatz an und füllt automatisch dort das Sekundärschlüsselfeld (7.1).
top

7.3 Was ist der Unterschied zwischen Beziehungen und Referenzen?

Beide beruhen auf einer Beziehungsdefinition, aber die Referenz ändert sich nur, wenn das Bezugsfeld sich ändert.

Anschaulicher gesagt funktioniert das Beziehungsfeld wie ein Fernglas, es übermittelt immer live, was in der anderen Tabelle passiert. Die Referenz dagegen funktioniert wie ein Fotoapparat. Ein Abbild wird erzeugt, das lokal abgelegt wird und immer sehr schnell verfügbar ist. Allerdings können Fotos veralten!

Beziehungsfelder wären demnach vorzuziehen. Tja das wären sie grundsätzlich, wenn da nicht der unangenehme Umstand wäre, dass Beziehungsfelder nicht speicherbar sind. Referenzfelder können gespeichert und indiziert werden und somit ein Vielfaches schneller durchsucht werden als Beziehungsfelder.

Beispiele für die Verwendung einer Referenz gibt es in 7.4
top

7.4 Wie kann ich bei Eintrag einer PLZ den Ort automatisch übernehmen, wenn diese Kombination bereits in der Datenbank existiert?

Erstelle eine Selbstbeziehung (7.1) über das Feld PLZ.

Trage im Feld Ort eine Referenz ein (Datei/Ablage -> Felder definieren -> Optionen -> automatische Eingabe) über die obige Selbstbeziehung zum Feld Ort.
top

7.5 Kann ich eine Beziehung zu dem jeweiligen aktiven Datensatz bauen?

Nein.

Nicht speicherbare Informationen können niemals Ziel einer Beziehung sein.
top

7.6 Was bedeutet die Meldung 'Diese Beziehung funktioniert nicht ...' bei Definition der Beziehung? (bis Version 6)

Eine Beziehung vergleicht zwei Felder miteinander. Z.B. kann eine Beziehung aus der Firma.fp5 heraus schauen, ob es zu dem aktiven Datensatz mit seiner Firma_ID (Primärschlüssel!) passende Datensätze in der Datei Person.fp5 gibt, die die gleiche Firmen_ID (Sekundärschlüssel) dort eingetragen haben.

Für den Sekundärschlüssel (und nur für den!) gilt die Beschränkung, dass er indizierbar (1.8) sein muss. Dort funktionieren also keine Variablenfelder, keine Felder mit Statusmarken, keine Formelfelder die nicht speicherbar sind.

Soweit ich das bisher unter FM 7 getestet habe, kommt diese Meldung leider nicht mehr. Man korrigiere mich...
top

7.7 Wie kann man Bezugsdatensätze zählen?

Mit der Funktion

Anzahl()


Über die gegebene Beziehung geht man zu einem immer existierenden Feld, z.B. einem ID-Feld. Also z.B.

Anzahl[ Beziehung::ID ].

Das kann z.B. genutzt werden, um die Anzahl eines bestimmten Wertes in einem Feld zu zählen. Soll gezählt werden, wieviel mal der Eintrag '1' im Feld 'Schulnote' steht, hilft eine Beziehung vom Feld '_Eins=1' nach 'Schulnote' und die Formel:

Anzahl[ Beziehung::ID ]
top

7.8 Warum können Bezugsfelder nicht indiziert werden?

Speicherbar sind für FileMaker immer nur die Feldinhalte in der aktuellen Tabelle. Die aktuelle Tabelle wird über das aktive Layout definiert. Bezugsfelder können auch aus anderen Tabellen stammen und sind daher nicht indizierbar.
top

7.9 Eine Beziehung soll auf Inhalte aus mehreren Feldern Rücksicht nehmen, was tun?

Alles nur FM 6:

Beispiel: In einem Portal (7.2) der Adressdatei sollen nur Bezugsdatensätze aus der ToDo-Datei angezeigt werden, die zur jeweiligen Adresse gehören UND im Feld Status den Eintrag 'offen' haben.

Die Beziehung kann nicht allein über die Adress_ID laufen, sie muss den Status mit einbeziehen.

Hierfür wird in der Adressdatei ein Hilfsfeld (1)

_Adress_ID_offen = Adress_ID & "offen"


erstellt. In der ToDo-Datei wird ein entsprechendes kombiniertes Hilfsfeld (2)

_Adress_ID_Status = Adress_ID & Status


erzeugt. Beide müssen den Typ Text haben.

Die Beziehung für das gewünschte Portal führt dann von Hilfsfelder (1) nach (2) und berücksichtigt sowohl die Adress_ID als auch den Status.

Nachteil: Es können nicht im Portal neue Bezugsdatensätze eingegeben werden. FileMaker versucht dann den Sekundärschlüssel (7.1) in ein nicht beschreibbares Formelfeld einzutragen. Dies kann nichts werden.

Ende Alle nur FM 6:

Seit FileMaker 7 können in der Beziehungsdefinition mehrere Kriterien angegeben werden und auch Vergleichsoperatoren wie 'Größer als' und 'Kleiner als' sind möglich! Damit ist dies Problem aus der Welt.
top

7.10 Was ist ein Multilinekey?

Bei der Zuordnung von Bezugsdatensätzen zum Hauptdatensatz wird der Inhalt eines Primärschllüsselfeldes in der Haupttabelle mit dem Sekundärschlüsselfeld in der Bezugstabelle abgeglichen, siehe 7.1. Inhalte beider Felder müssen normalerweise identisch sein.

FileMaker besitzt aber zusätzlich eine Besonderheit. Wenn Primärschlüssel oder Sekundärschlüssel oder beide mehrzeilig sind, reicht für den Aufbau der Beziehung die Übereinstimmung jeweils eines Zeilenpaares.

Steht beispielsweise im Primärschlüsselfeld:

17¶
19¶
23


kann eine Beziehung zu dem Datensatz mit dem Sekundärschlüssel

18¶
19


aufgebaut werden, da in beiden Feldern eine Zeile mit dem Inhalt '19' enthalten ist.
top

7.11 Was ist eine Eins-Eins-Beziehung?

Bis FM 6.0:

Soll eine Beziehung (Was sind B.?) zu allen Feldern einer Datenbank oder zu Variablenfeldern (Was sind V.?) hergestellt werden, kommen die Eins-Eins-Beziehungen zum Einsatz.

Man benötigt auf beiden Seiten der Beziehung, d.h. in beiden beteiligten Dateien ein Formelfeld '_Eins', das als Formel nur die Zahl '1' enthält. Dies gehört zur Standardausrüstung jeder FileMaker-Datenbank. Über diese Felder wird eine Beziehungen gebaut, die mit allen Datensätzen der Bezugsdatei oder mit Variablenfeldern verbindet.

Diese Konstruktion hat den Nachteil, das sie nicht funktioniert, wenn in der aufrufenden Datei kein Datensatz aufgerufen ist. Soll dieses abgefangen werden, muss in der aufrufenden Datei statt einer Formel ein Variablenfeld mit dem Inhalt '1' verwendet werden. In der Zieldatei funktioniert dieser Trick leider nicht, da dann die Beziehung nicht funktionieren würde.

Ab FM 7 ist dieser Kniff nicht mehr notwendig, da er durch die Beziehung mit Zuordnung Kartesisches Produkt abgelöst wurde 7.13
top

7.12 Wie kann ich eine Beziehung zu einem Datums- oder Zahlenbereich erstellen?

Nur bis FM 6:

Diese Art von Beziehungen werden z.B. bei einer Belegungsplanung benötigt. Ein Schulungsraum ist für bestimmte Zeiträume belegt, die durch ein Anfangs- und Endedatum beschrieben sind. Die Frage ist: liegt ein bestimmter Termin innerhalb oder außerhalb eines Belegungszeitraumes?

Wenn die Zeiträume überschaubar kurz sind, kann man per Formelfeld Multilinekeys 7.10 erstellen, bei langen Zeiträumen wird dies aber unmöglich.

Die wohl wichtigste Quelle zu diesem Thema ist: http://www.onegasoft.com/tools/smartranges/index.shtml (englisch). Hier werden zwei PlugIns genannt, die das Problem lösen und ein erstaunlicher Ansatz, der allein mit FileMaker-Bordmitteln auskommt, nämlich die Smartranges-Methode.

Ende Nur bis FM 6:

Seit FM 7 können mehrere Kriterien in eine Beziehungsdefinition einfließen und zusätzlich Vergleichsoperatoren verwendet werden. Damit sind alle Tricks der eben beschriebenen Natur hinfällig.
top

7.13 Was ist eine Beziehung mit Typ Kartesisches Produkt

Ab FM 7:

Das Symbol 'X' in der Beziehungsdefinition steht für eine Zuordnung jedes Datensatzes mit allen Datensätzen der Bezugstabelle.

Damit ist der geliebte Trick mit der Eins-Eins-Beziehung nicht mehr nötig.
top

7.14 Meine erste Beziehung

In Filemaker 7 wurden 2 Tabellen erstellt, Adressen und Briefe.

Wie muss die Beziehung definiert werden, die weiss, welcher Brief wem gehört?

Jede Tabelle hat ein Feld ID, Typ Zahl, Optionen 'automatische Seriennummer' und 'Änderung untersagen'.

Zusätzlich hat die Brief-Tabelle noch eine ID_Adresse, auch ein Zahlfeld ohne Optionen. Denn der Brief gehört ja zur Adresse und nicht umgekehrt.

Jetzt kommst du: welche Felder gehören verbunden?
top

8 Layout

8.1 Wie kann ich Textfarben ändern in Abhängigkeit von Feldinhalten?

Das geht mit einem kleinen Kniff, der bis Version 6.0 nötig ist.

Soll etwa das Feld Geschw_in_der_Ortschaft bis 50km/h grün dargestellt werden, bei größeren Werten aber rot, werden zwei Formelfelder angelegt

g_1 = wenn( Geschw_in_der_Ortschaft <= 50 ; Geschw_in_der_Ortschaft ; 0 )
g_2 = wenn( Geschw_in_der_Ortschaft > 50 ; Geschw_in_der_Ortschaft ; 0 )


Beide Felder werden aufs Layout gelegt, das eine grün, das andere rot formatiert (Format -> Textfarbe). Das Format -> Feldformat wird auf 'Null nicht anzeigen' eingestellt und dann werden beide Felder exakt übereinandergelegt.

Voila.

Seit FileMaker 7 sind zwei Dinge in unser Programmiererleben getreten, die uns diesen Kniff ersparen:

Erstens gibt es jetzt Funktionen zum Ändern der Formatierungen, zweitens können wir diese Funktionen bei Feldänderung auslösen. Dazu wird in den Optionen der Felddefinitionen eine automatische Berechnung eingetragen und das Häkchen darunter entfernt bei 'Vorhandenen Feldwert nicht ersetzen falls vorhanden'
top

8.2 Wie kann ich Hintergrundfarben in Abhängigkeit von Feldinhalten verändern?

bis v 8.5:

Formeln und Variablen können auch den Typ Medien haben. Beides wird bei diesem Trick benötigt.

Für jedes Hintergrundbild wird ein Globalfeld vom Typ Medien angelegt. Soll dort einfach nur eine bestimmte Farbe eingefügt werden, reicht es, in den Layoutmodus zu wechseln, ein farbiges Rechteck zu erzeugen und dies in die Zwischenablage zu bringen. Nach Wechsel zurück in den Blätternmodus kann die Zwischenablage dann in das Globalfeld eingefügt werden.

Jetzt brauchen wir noch ein Formelfeld vom Typ Medien nach dem Strickmuster

wenn( Bedingung ; Globalfeld_rot ; Globalfeld_grün )


und der Hintergrund wird sich abhängig von der Bedingung rot oder grün zeigen!

Seit Version 9 gibt es hierfür die komfortable bedingte Formatierung.
top

8.3 Können sich Wertelisten ändern in Abhängigkeit von der Auswahl in einer anderen Werteliste?

Ja, das heißt dynamische Werteliste und geht so:

Nehmen wir folgendes Beispiel: die erste Wertliste gehört dem Feld Automarke und dort können wir wählen zwischen VW, Opel, Ford, etc. Haben wir hier VW ausgewählt, zeigt die zweite WL Polo, Golf, Passat.

(1) Statt zwei Wertelisten brauchen wir eine Hilfstabelle 'Index'.

(2) 'Index' hat (mindestens) zwei Felder Werteliste.1 und Werteliste.2

(3) Nun wird die Index-Tabelle gefüllt mit den Datensätzen

1.DS Werteliste.1="VW" Werteliste.2="Polo"
2.DS Werteliste.1="VW" Werteliste.2="Golf"
3.DS Werteliste.1="VW" Werteliste.2="Passat"
4.DS Werteliste.1="Opel" Werteliste.2="Corsa"
usw usw usw


(4) Jetzt gehts in die Haupttabelle 'Haupt' - wir brauchen das Auswahlfeld "Automarke". Dies bekommt eine Werteliste verpasst, die konfiguriert wird auf 'Werte verwenden aus Feld' ausgewählt wird das Feld 'Werteliste.1' in der Indextabelle.

(5) Erstelle eine Beziehung über die Felder Automarke in 'Haupt' nach Werteliste.1 in 'Index'.

(6) Jetzt ist es fast geschafft, da nur noch eine Werteliste definiert werden muss, die über die Beziehung aus (5) auf Werteliste.2 zugreift. Dies ist die gewünschte dynamische Werteliste.

top

8.4 Wie erstelle ich ein Listenlayout?

Das Listenlayout erhält einen Datenbereich, der nur die Höhe einer einzigen Listenzeile hat. Meist ist er nicht höher als 20 Pixel. Hier werden alle Listenfelder nebeneinander eingefügt. Die Label kommen darüber in den Kopfbereich.

Soll per Klick auf die Label im Listenkopf nach diesem Feld sortiert werden, werden die Label per 'Format -> Taste' mit einem entsprechenden Sortierskript versehen (6.2).

Zum Betrachten der Liste ist es im Prinzip ausreichend, unter Ansicht auf 'als Liste anzeigen' zu wechseln. Das könnte aber für ungeübte User eine Falle darstellen. Besser wird im Layoutmodus unter 'Layout -> Layouteinstellungen' auf dem zweiten Register 'Ansichten' der Formularmodus ganz deaktiviert.
top

8.5 Ein Layout ist defekt und läßt sich nicht mehr löschen, was ist zu tun?

Man kann versuchen, das Layout so zu öffnen, dass keine Objekte im Bildschirmfenster erscheinen mit folgenden Schritten:

- auf einem funktionierenden Layout weit rechts unten ein Objekt erstellen,
- in das defekte Layout wechseln und Layout löschen.

Alternativ hilft hier auch oft ein Plattformwechsel, d.h. eine auf Mac erzeugte Datei auf PC öffnen und umgekehrt.
top

8.6 Lassen sich Buttons ein- und ausblenden?

Ja, mit dem Portaltrick: Buttons in ein einzeiliges Portal platzieren, dann eine Beziehung von einem Null/Eins-Feld zu einem Immer-Eins-Feld damit verbinden und die Buttons lassen sich über das Null/Eins-Feld ein- und ausblenden.
top

8.7 Wie lassen sich Formatierungen von Textfeldern (nachträglich) entfernen?

In neueren Version geht es mit

ErsetzeAlleFeldwerte( DasFeld ; TextFormatEntfernen( DasFeld ) ).
top

9 Suchen

9.1 Wie können Datensatzdubletten gefunden werden?

(1) Das Ausrufungszeichen

Einfachste Möglichkeit ist die Eingabe des '!' in ein oder mehrere indizierbare Felder. Gefunden werden Mehrfacheinträge in diesen Feldern

(2) Die Selbstbeziehung ermittelt Anzahl

Nächste Stufe ist das Einrichten einer Selbstbeziehung über das fragliche Feld und eines Formelfeldes der Bauart

= Anzahl( Selbstbeziehung::Irgendenein_immer_existierendes_Feld )


Dies kann mit einer Wenn-Funktion noch verfeinert werden, sodass nur ein Wert angezeigt wird, wenn die Anzahl >1 ist.

Diese Formel, in roter Textfarbe neben das Eingabefeld gelegt, stellt eine Art laufende Warnung dar, wenn es einen gleichen Eintrag bereits gibt.

Das betrachtete Feld kann dabei auch ein kombiniertes Feld wie

Vorname & Nachname


sein

(3) Die Selbstbeziehung unterscheidet Original und Fälschung

Die Selbstbeziehung aus (2) kann auch zum Markieren nachträglich hinzugekommener Einträge mit gleichem Feldinhalt dienen.

Benötigt wird hierzu ein ID-Feld, dass datenbankweit eindeutig ist. Sowas sollte es ja sowieso immer geben. Man erstellt es mit der Seriennummernfunktion.

Die Dublettenformel sieht so aus:

= Wenn( Selbstbeziehung::ID = ID ; "" ; "Achtung Dublette" )


Diese Formel nutzt den Umstand, dass das Abfragen eines Feldes über eine Beziehung immer den ersten Datensatz der ja möglicherweise mehreren Bezugsdatensätze auswählt.

Man kann diese Technik noch verfeinern über die Auswahl einer Sortierung in der Selbstbeziehung. Damit kann der Datensatz mit dem ältesten Erstellungsdatum als Original gekennzeichnet werden.
top

9.2 Wie können leere Feldinhalte gesucht werden?

Eingabe des Gleichheitszeichens '=' in das fragliche Feld oder in mehrere Felder.

Ist das Feld mit einer Werteliste belegt, kann ein '=' aus der Zwischenablage eingesetzt werden.

Das Gegenteil ist der Stern '*', der nichtleere Feldinhalte sucht. Diese Sucheingabe ist allerdings auf Textfelder beschränkt.
top

9.3 Wie kann in Feld Ort sowohl der Wert 'New York' als auch 'Tokio' und 'London' gefunden werden (ODER-Suche)?

(1) Suchenmodus aktivieren (Strg-F bzw Apfel-F)
(2) New York in das Feld Ort eintragen
(3) Neue Abfrage hinzufügen mit 'Abfragen -> Neue Abfrage hinzufügen' oder Strg-N/Apfel-N
(4) weiteren Wert eingeben
(5) die Schritte (3) und (4) für alle Suchkriterien wiederholen
(6) Suchen auslösen durch ENTER oder Klick des Suchen-Buttons links im Statusbereich

Die einzelnen erzeugten Abfragen benehmen sich wie Datensätze und können in gewohnter Weise durchblättert werden (links im Statusbereich durch Klicken oder mit Ctrl-Pfeil-Auf/Ab)
top

9.4 Wie kann ich beim Suchen normale Suchinhalte mit auszuschließenden Inhalten kombinieren?

Mehrere Suchabfragen definieren. Nach Wechsel in den Suchenmodus mit 'Abfragen -> Neue Abfrage hinzufügen' oder Strg/Apfel - N. Pro Abfrage kann die Option 'Ohne' links im Statusbereicht gewählt werden.
top

9.5 Einzelne Datensätze elegant auswählen oder Datensätze markieren (von Christian Hahn)

Ich möchte aus allen meinen Adressen einige Personen auswählen um ihnen eine Email zu schicken (oder sonst etwas mit diesen Datensätzen zu machen).

Zunächst kein Problem, ich klicke den einzelnen Datensatz an und dann den Befehl 'Datensatz ausschließen'. Jedoch, spätestens nach dem fünften Ausschluss, bin ich mir nicht mehr ganz sicher, welche Datensätze ich denn nun schon ausgeschlossen habe.

Schön wäre, wenn ich ständig sehen könnte, wen ich bisher schon ausgewählt habe, und dazu wäre es praktisch, wenn Filemaker zum Markieren einzelner Datensätze so etwas hätte wie eine Checkbox, so ein Kästchen, das beim Anklicken ein Häkchen bekommt. Hat Filemaker aber wieder einmal nicht. Macht nichts, das können wir uns selber bauen.

Wir legen ein neues Feld 'Markiert' vom Typ Text an. Dieses Feld platzieren wir in unserem Layout mit dem Feldformat 'Kontrollkästchen' und einer neuen Werteliste mit nur dem einen Wert '    markiert'. Dass wir der Werteliste nur den einen Wert geben, hat den Vorteil, dass unser Feld im Layout auch nur ein Kontrollkästchen bekommt. Und auch die Leerzeichen vor dem Wort 'markiert' sind Absicht. Denn wenn wir nun unser Feld 'Markiert' im Layout so schmal machen, dass das Kontrollkästchen gerade noch vollständig zu sehen ist, dann bekommen wir im Blättern-Modus nur noch das Kontrollkästchen zu sehen (ohne die unnötige Bezeichnung).

Das sieht schon ganz schön wie eine Checkbox aus und funktioniert auch so. (Gut, es ist zwar nur ein Kreuzchen und kein Häkchen, aber das kann man wohl akzeptieren. Wer auf dem Häkchen besteht, wähle statt des Feldtyps Text ein Medienfeld, besorge sich eine Bitmap von einem Häkchen und belege das Medienfeld als Taste, die ein Skript auslöst, das einmal die Häkchen-Bitmap anzeigt und einmal nicht.)

Zum Verständnis: Das Anklicken des Kontrollkästchens bewirkt, dass das Feld 'Markiert' in diesem Datensatz den Wert '    markiert' hat (auch wenn unser Anwender im Layout davon nichts zu sehen bekommt), und mit dem Wegklicken des Kreuzchens ist das Feld wieder leer.

Welches Wort man für die Werteliste benutzt, ist auch eigentlich egal, Hauptsache, es ist ein eindeutiger Wert, denn Filemaker kann mit einem Leerstring nichts anfangen.

Jens Teich empfiehlt als Listeneintrag "1", einerseits um zu verdeutlichen, dass der Inhalt des Wertes nicht entscheidend ist und ähnlich wie bei Eins-Eins-Beziehungsfeldern (7.11) nur funktionale Bedeutung hat, andererseits weil sich das Programm ggf. leichter mehrsprachig machen lässt.

Nun brauchen wir nur noch eine Taste, die ein Skript auslöst, in dem drinsteht, was wir mit den ausgewählten Datensätzen machen wollen, z.B. jeweils eine Email verschicken.

Eine hübsche Erweiterung:

Wenn ich auf diese Weise nun in einer langen Liste von Datensätzen hin und wieder einzelne Datensätze markiere, dann verliert man auch hierbei leicht die Übersicht, weil die Menge aller Datensätze ja meist nicht in einem Bildschirm zu sehen ist.

Deshalb wäre es nun noch praktisch, wenn alle markierten Datensätze in unserer Liste schön übersichtlich zu oberst an den Anfang unserer Liste gerückt würden, das sieht schick aus.

Und das geht so: Mit dem Feldwert von 'Markiert' kann man auch eine Sortierung durchführen, die bei jedem neuen Markierungs-Klick durchgeführt wird.

Damit das funktioniert, müssen wir allerdings leider noch einen kleinen Umweg gehen. Denn wenn wir das Feld 'Markiert' mit einer Taste belegen, um damit jedes Mal ein Sortier-Skript auslösen zu lassen, wird der Klick von der Tastenfunktion abgefangen und das Kontrollkästchen bekommt kein Kreuzchen mehr. Also muss unser Skript auch das übernehmen, am einfachsten mit dem Skriptbefehl 'Feld angeben' und der Formel: Wenn( Markiert = "    markiert"; ""; " markiert"). Dann folgt der Befehl 'Sortieren' [Sortierfolge übernehmen, Ohne Dialogfeld].

Wie wir aus 6.2 wissen, müssen wir zuvor einmal von Hand sortiert haben, damit es auch eine Sortierfolge gibt, die wir im Skript übernehmen lassen können.

Achtung: Sortieren nach Feld 'Markiert' absteigend (!), damit die markierten Datensätze auch zu oberst stehen.

Achtung Falle:
Jens Teich weist zu Recht darauf hin, dass unsere Sortierung nach dem Feld 'Markiert' natürlich jede vorherige Sortierung (die vielleicht auch noch mühsam von Hand zusammengestellt worden war) zerstört.

Deshalb sollte man sich den Einsatz unseres schönen Schmankerls vorher gut überlegen. Problemlos wird er sein, wenn es entweder auf eine Sortierung nicht ankommt oder wenn es sich um eine Standard-Sortierung handelt, wie z.B. bei Personen nach Name, Vorname etc., die man in unserem Sortier-Skript ohne Mühe berücksichtigen kann.

Und noch eins:
Wir sollten uns noch ein Skript zulegen, mit dem wir alle Markierungen auf einmal wieder löschen können (sonst hätte man den neuen Komfort teuer zu bezahlen).

In diesem Skript verwenden wir den Befehl 'Ersetzen', Feld 'Markiert', ersetzen durch berechnetes Ergebnis mit der beeindruckenden Formel "" (nichts).

Gut aufpassen, genau hingucken, der Befehl 'Ersetzen' kann viel Unheil anrichten.

Taste anlegen mit der Beschriftung "Alle Markierungen löschen" oder so
ähnlich, fertig. Macht ganz schön was her!
top

10 Formeln

10.1 In Formelfelder läßt sich manuell nichts eintragen. Wie kann man das umgehen?

Das Problem sei hier am Beispiel der Briefanrede gezeigt.

(1) Formelfeld Briefanrede_auto

= "Sehr geehrte" & wenn( Anrede = "Herr" ; "r Herr " ; " Frau " ) & wenn(istleer(Titel);"";Titel&" ") & Name


Dies Formelfeld erzeugt automatisch die dem Geschlecht zugeordnete Anrede 'Sehr geehrter Herr ...' bzw. 'Sehr geehrte Frau ...'.

(2) normales Datenfeld Briefanrede_manuell für abweichende Eingaben 'Hei Paul alter Kumpel!'

(3) Formelfeld Briefanrede

= wenn(istleer(Briefanrede_manuell) ; Briefanrede_auto ; Briefanrede_manuell )


So kann man beides haben: Formelberechnung und manuelle Eingabemöglichkeit, allerdings in einem anderen Feld. Die Felder (2) und (3) lassen sich im Layout aber gut übereinanderlegen.

Seit FM 7 geht das deutlich eleganter mit nur noch einem einzigen Textfeld mit einer automatischen Formel und dem entfernten Häkchen bei 'Nicht ersetzen wenn...'
top

10.2 In Formeln geht das Zahlenformat verloren, was tun?

Die Formel:

"Skonto ist " & Skontosatz


kann merkwürdige Ergebnisse liefern wie "Skonto ist ,5". Vollkommen unmöglich ist es, eine Ganzzahl auf z.B. zwei Nachkommastellen zu formatieren.

Abhilfe schafft ein Formelungetüm:

Ganzzahl(eingabe) &"," & ZeichenRechts("00"&Ganzzahl(eingabe *100);2)


Erklärung: Die Funktion Ganzzahl(Zahl) schneidet -vereinfacht ausgedrückt- die Nachkommastellen ab, ohne zu runden (Bsp: Ganzzahl(65,8)ergibt 65). Die Funktion ZeichenRechts (Zahl; AnzahlZeichen) (vor FM7: "Rechts") nimmt die angegebene Anzahl von Zeichen von Rechts und schneidet den Rest ab. Beispiel: ZeichenRechts (12345678;3) ergibt "678".

Zur Formel: Als Beispiel soll ein Skonto von 0,56 Euro dienen. Hier passiert Folgendes: Die Formel schneidet zuerst vom Betrag die Nachkommastellen ab und gibt den Rest aus - aus "0,56" wird "0". Dann wird ein "," ausgegeben. Nun wird "0,56" mit 100 multipliziert (0,56 -> 56,00) und dann wieder seiner Nachkommastellen beraubt (56,00 -> 56) und dieses dann ausgegeben. Ergebnis "0,56". Die Funktion "ZeichenRechts" sorgt hier dafür, dass wirklich nur die Cent-Beträge als Nachkommastelle angegeben werden. Ohne "ZeichenRechts" würde diese Formel bei einem Skonto über einem Euro Blödsinn ausgeben (123,56 Euro ergäbe 123,12356 Euro).

Wenn das Ergebnis nicht unbedingt als Formel benötigt wird, sondern nur auf einem Layout erscheinen soll, kann der Text direkt auf das Layout geschrieben werden und das Zahlenfeld als Platzhalter eingefügt werden. Das gesamte Layoutobjekt kann dann mit zwei Nachkommastellen formatiert werden.
top