Datenbankumsetzung mit FileMaker

Gerundium

Aktives Mitglied
Thread Starter
Dabei seit
22.10.2005
Beiträge
2.003
Reaktionspunkte
71
Vielleicht kann mir jemand einen Stoß in die richtige Richtung geben.

Ich möchte eine Datenbank mit FileMaker erstellen (FileMaker 8 Demo), die folgenden Sachverhalt umsetzt (auf das Wesentliche reduziert):

Ein Kunde erteilt einen Auftrag. Zur Erfüllung des Auftrages werden von Mitarbeitern Arbeitsleistungen erbracht, zusätzlich werden diverse Materialien eingesetzt/verbraucht (Mitarbeiter-unabhängig). Manchmal werden Fremdleistungen hinzugenommen. Diese drei verschiedenen Bereiche mit unterschiedlichen Posten zählen zu einem Auftrag. Idealerweise sollten diese Posten in einer Maske mit den drei Bereichen (gern als jeweilige Liste in der Maske) eingegeben werden, sodass sie automatisch in den betreffenden Tabellen aktualisiert werden. Beispiel:
Kunde x in der Maske auswählen, dann erhält man in den drei untereinander stehenden Listen die Einträge und kann neue Einträge vornehmen.

Und genau hier komme ich nicht weiter. Ich schaffe es nicht, dies in FM (redundanzfrei) umzusetzen, ich begreife anscheinend die Trennung vom Layoutmodus (Felddefinitionen) und den definierten Tabellenbeziehungen nicht. Abgesehen davon, dass mir selbst die angesprochenen Listen nicht gelingen (ganz zu schweigen von automatischer Feldgrößenanpassung). Ehrlich gesagt empfinde ich FM als wesentlich schwieriger als damals Oracle über die Kommandozeile.:D

Da ich vor ein paar Jahren diesen ganzen Datenbankkrempel lernte (was sich bei mir wohl als wenig fruchtbar erwies), kramte ich ein wenig in brachliegenden Gehirnregionen und schrieb jetzt die Tabellendefinitionen frisch von der Leber weg neu:

KUNDE (Kunde_ID NUMBER(8),
Kunde_VName CHAR(20),
Kunde_NName CHAR(20),
PRIMARY KEY (Kunde_ID))

MITARBEITER (Mitarbeiter_ID NUMBER(4),
Mitarbeiter_Name CHAR(20),
PRIMARY KEY (MA_ID))

AUFTRAG (Auftrag_ID NUMBER(10),
Kunde_ID NUMBER(8),
PRIMARY KEY (Auftrag_ID),
FOREIGN KEY (Kunde_ID) REFERENCES Kunde (Kunde_ID))

MATERIAL (Material_ID NUMBER(10),
Datum DATE,
Menge NUMBER(4),
Materialeinsatz VARCHAR(200),
netto NUMBER(4,2),
MwSt NUMBER(4,2),
brutto NUMBER(4,2),
Auftrag_ID NUMBER(10),
PRIMARY KEY (Material_ID),
FOREIGN KEY (Auftrag_ID) REFERENCES Auftrag (Auftrag_ID))

ARBEITSSTUNDEN (Arbeitsstunden_ID NUMBER(10),
Datum DATE,
Stunden NUMBER(4),
Teil VARCHAR(200),
Arbeiten VARCHAR(200),
Stundensatz NUMBER(4,2),
Auftrag_ID NUMBER(10),
Mitarbeiter_ID NUMBER(4),
PRIMARY KEY (Arbeitsstunden_ID),
FOREIGN KEY (Auftrag_ID) REFERENCES Auftrag (Auftrag_ID),
FOREIGN KEY (Mitarbeiter_ID) REFERENCES Mitarbeiter (Mitarbeiter_ID))

FREMDLEISTUNG (Fremdleistung_ID NUMBER(10),
Datum DATE,
Menge NUMBER(4),
Fremdleistung VARCHAR(200),
netto NUMBER(4,2),
MwSt NUMBER(4,2),
brutto NUMBER(4,2),
Auftrag_ID NUMBER(10),
PRIMARY KEY (Material_ID),
FOREIGN KEY (Auftrag_ID) REFERENCES Auftrag (Auftrag_ID))

Höchstwahrscheinlich sind auch hier Fehler enthalten, da ich mich anscheinend erst wieder in die Thematik einlesen muss. Ändert m.E. aber nichts an den Umsetzungsschwierigkeiten.

Kann mir jemand auf einfache Art erklären, wie ich die Aktualisierungen, Beziehungen, Listen etc. (mit oben genannter Funktionalität) in FM umsetzen kann? Oder gibt es keinen schnellen, schmerzfreien Weg?
 
Wenn ich Dich richtig verstehe, hast Du bereits mehrere Tabellen angelegt, nämlich Kunde, Mitarbeiter, Auftrag, Material usw. Dies kannst Du unter Definieren / Datenbank / Tabellen prüfen. Dort müssten mehrere Tabellen aufgeführt sein.

Unter Definieren / Datenbank / Felder muss zu sehen sein, welche Felder in welchen Tabellen definiert sind.

Unter Definieren / Datenbank / Beziehungen müssen die Beziehungen zwischen den Tabellen über die Schlüsselfelder/oder Bezugsfelder zu sehen sein.

Wenn Du nun ein neues Layout mit dem Layoutassistenten erstellen lässt, gibts Du ein, welche Tabelle dazu als Basis dienen soll. Da nun in diesem Layout auch Felder eines oder mehrerer Datensätze anderer Tabellen eingefügt werden können, verschwimmt die Zugehörigkeit eines Layout zu einer bestimmten Tabelle.

Empfehlung: Wenn es mit dem Layout hakt, versuche doch als erstes, in einem Layout Deiner Tabelle Kunden ein Feld (besser einen Ausschnitt mit dem Feld für mehrere Datensätze) aus der Datei Aufträge einzufügen. Dort sollen dann die Aufträge, die dieser Kunde erteilt hat, zu sehen sein.
 
Hi,

mach Dir doch ein paar Musterdatensätze zum Spielen.

Viele Grüße
 
Zuletzt bearbeitet:
Erstmal möchte ich euch für die Antworten danken!

@joachim14
Die angegebenen Tabellen habe ich neu konzipiert und noch nicht angelegt. Das nur als Hinweis am Rande. Aber ich habe zu diesem Problem - natürlich - schon Tabellen angelegt. Einmal je Tabelle eine Datenbankdatei, dann - für FM 8 wohl neu - alle Tabellen in einer Datei, was ich auf der einen Seite griffiger finde, auf der anderen Seite gefährlicher bei einer fehlerhaften Datei.

Die Beziehungen hatte ich auch fröhlich mit der Maus gezogen, mit einem Klick auf das Gleichheitszeichen (?) konnte ich auch die zulässigen Änderungen aktivieren. Ich entschied mich dafür, Änderungen von beiden Seiten zuzulassen. Wer weiß, ob man nicht schnell mal eine Tabelle direkt bearbeitet (hoffentlich ist das nicht schon ein Fehler).

Das mit dem neuen Layout probierte ich auch, den Layoutassistenten kann ich nicht leiden, aber ein leeres Layout schützt vor starrer Bevormundung. Ein paar kleine Erfolge konnte ich auch verbuchen: eine Werteliste mit den Mitarbeiternamen, die nach dem Prinzip Zufall erweitert wurde; dann einmal (leider nicht reproduzierbar) eine automatische Kundenvornamen-Ergänzug bei Auswahl des Kundennachnamens (Werteliste, siehe Mitarbeiternamen).
Ich denke, den Kampf muss ich im Layout führen. Also werde ich es mit dem "Ausschnitt" versuchen (so ich ihn finde). Irgendwie muss ich das Konzept von FM begreifen, was mir ehrlicherweise momentan sehr schwer fällt. Trial & Error machen mir bei dieser komplexen Geschichte keinen Spass. Und das ungute Gefühl, sich auf das Werk nicht verlassen zu können - am Schluss soll mir das Programm Rechnungen ausspucken.

@mikne21
Ja, die Maschine laufen zu lassen ist auch meine Devise. Bei den Tests werden schließlich zwangsläufig Datensätze angelegt.

Noch etwas am Rande: Äußerst befremdlich finde ich es übrigens, dass sich die Darstellung (Scrollbalken, Buttons etc.) irgendwie nicht gewandelt hat. Sieht noch immer aus wie zu Urzeiten bei ClarisWorks.


(OK, der Typ über mir hat mit seinen bescheuerten Internet-Ballerspielen + Labern aufgehört, jetzt heißt es für mich erstmal ratzen!)
 
Offenbar ist ein gut Teil des Weges von Dir schon zurück gelegt.

Noch einen Tipp zu Layouts und Ausschnitten.
Du hast ein Layout einer Tabelle und möchtest in diesem Layout (auch) Datensätze einer anderen Tabelle anzeigen. Die Tabellen sind über die Beziehung verbunden. Dies geschieht mit Ausschnitten.
Du suchst Ausschnitte?
In den Layoutmodus schalten. In der linken Seitenleiste sind die Werkzeuge. Links oben der Pfeil, rechts unten das Ausschnitticon. Darauf klicken und dann rechts im Datenbereich einen Ausschnitt damit zeichnen. Es wird dann gefragt, welche Bezugsdatensätze gezeigt werden sollen. Nach der Auswahl muss in den weißen Teil des Ausschnitts (= 1. Reihe von Datensätzen) das Feld aus der Bezugstabelle eingefügt werden, das angezeigt werden soll.
Man muss also zweimal im Layout eine Angabe zu der Bezugstabelle machen.
 
O Thou That Tellest Good Tidings To Zion

Mit diesem Ausschnitt hatte ich schon einmal gespielt - ohne Erfolg. Heute erst wieder kein Erfolg, dann legte ich den Ausschnitt in das Layout von "Auftrag" und es klappte (obwohl mir das so nicht gefällt, aber es funktioniert)! Voodoo für Fortgeschrittene. :p

Warum auch immer, ich musste die erste Zeile nicht bearbeiten, die wurde korrekt angegeben (nach Auswahl der Datenfelder im Dialog).

Dadurch habe ich einen gewaltigen Schritt Richtung Erfolg getan. Jetzt muss ich mich noch weiteren Layoutgeschichten widmen. Eine Frage brennt mir besonders auf den Nägeln: Wie stelle ich es an, dass bei der Rechnung die drei Bereiche separat für sich (als Block, ohne Scrollbalken), doch untereinander als Rechnung ausgegeben werden, das kann sich auch über mehrere Seiten erstrecken. Im Formatmenü habe ich gesehen, dass man die Feldgrößen angleichen kann, aber: funktioniert das nicht mit Ausschnitten? In der Seitenansicht bleiben die großgezogenen Felder wie sie sind und denken nicht daran, ihre Größe an den Platzbedarf anzupassen.

Zur Kontrolle gebe ich hier noch das Beziehungsdiagramm an. Ist das soweit in Ordnung? Oder laufe ich damit in Konsistenzprobleme?
 

Anhänge

  • Bild 2.png
    Bild 2.png
    47,5 KB · Aufrufe: 104
Es wird doch!

Zu den 3 Bereichen habe ich zugegebenermaßen nicht verstanden, was Du Dir vorstellst.
Ich vermute, die Darstellung von Datensätzen anderer Tabellen in 3 Blöcken untereinander? Dann kann man auch 3 Ausschnitte untereinander platzieren.
Das Diagramm sieht auf den ersten Blick nicht falsch aus. Ich kann aber nicht beurteilen, ob Du mit n : 1 Beziehungen auskommst. Falls Du auch m : n Beziehungen brauchst, hilft hoffentlich der entsprechende Passus in der FM Hilfe.

Mit dem Angleichen hatte ich kürzlich ebenfalls ein Problem, allerdings bei Fotos. Das Angleichen funktioniert nur, wenn bei allen Feldern, bzw. Ausschnitten oder grafischen Elementen die Angleichfunktion eingeschaltet ist und außerdem die jeweilige Ausrichtung auf "oben" geschaltet ist.
Ich bin mir trotzdem nicht sicher, ob es damit bei Ausschnitten dann funktioniert, kein eigener Test.
 
Hoppla! Das mit den 1:n Beziehungen sehe ich jetzt erst. Scheint aber zu stimmen; n:m Beziehungen würden auch bei den angegebenen Tabellen zu Problemen führen (bspw. ein Auftrag mit mehreren Kunden).

Zu den drei Bereichen:
0. Bereich "Gesamt": Jeweilige Summen der einzelnen Bereiche (damit befasse ich mich später)
1. Bereich "Arbeitsstunden": Alle für diesen Auftrag erbrachten Arbeitsleistungen
2. Bereich "Material": Alle für diesen Auftrag verwendeten Materialien
3. Bereich "Fremdleistung": Alle für diesen Auftrag vergebenen Fremdleistungen (falls vorhanden)

Alles untereinander in die drei Bereiche gegliedert. Das Problem mit den Ausschnitten ist dabei, dass man die Darstellungstiefe (z.B. 10 Reihen) anzugeben hat, sind es mehr Reihen, muss man scrollen. Die Angleichfunktion aktivierte ich für alle Objekte. In einem Testdokument hatte ich es hinbekommen, allerdings nicht mit Ausschnitten, sondern mit reinen Feldern. Dann aber kann ich die Bereichsgeschichte vergessen.

Ich habe mir ein Beispieldokument einer Rechnung angesehen. Dort sind 20 Reihen für Artikel angelegt, sind es weniger, bleiben einige Reihen leer, sind es mehr: Pech gehabt. Das ist mir zu statisch.

Vielleicht muss ich mir ein anderes Layout überlegen, was natürlich mit einem Verzicht bezüglich Übersichtlichkeit einher gehen würde.
 
Ich habe eben doch noch mal auch aus Eigeninteresse getestet: Auch Ausschnitte lassen sich in der Größe angleichen. Sprich: ein Ausschnitt mit 5 Datensätzen darin wird kleiner, als ein Ausschnitt mit 10 Datensätzen. So soll es ja auch sein.
Wenn das bei Dir (noch) nicht funktioniert, bitte noch einmal alle Einstellungen prüfen.
 
Danke für deine Hilfe, leider scheint FM nicht das Layout zu unterstützen, das mir vorschwebt. Die von dir beschriebene Anpassung funktioniert sehr gut. Allerdings bringt mich das nicht weiter (siehe angefügtes Bild). Es sieht so aus, als müsste man die Felder generell so groß ziehen, dass der längste zu erwartende Inhalt Platz findet. Nun können das in meinem Fall vereinzelt gut und gerne 200-300 Zeichen sein. Und pro Auftrag können das +/- 100 Posten pro Bereich sein. Wie bescheiden das aussieht, wenn viele Reihen praktisch nur aus weißem Freiraum bestehen, kannst du dir sicher denken. Von dem ergonomischen Fiasko der Eingabe will ich hier gar nicht erst anfangen.

Muss man wirklich die maximal zu erwartende Postenanzahl im Layout aufziehen? Das kann doch nicht wahr sein?! Und innerhalb eines Ausschnitts sind keine automatischen Feldgrößenanpassungen vorgesehen?

Mag sein, dass ich in einer gedanklichen Sackgasse stecke oder das sprichwörtliche Brett vorm Kopf habe, aber momentan bin ich von FM ziemlich enttäuscht.

Edit: Bild fehlte
 

Anhänge

  • Bildfm.jpg
    Bildfm.jpg
    63,3 KB · Aufrufe: 90
Zuletzt bearbeitet:
Dein Bild zeigt die Daten im Blättern Modus. Da wird in der Tat nichts verkleinert oder angeglichen. Das geschieht nur beim Druck oder in der Seitenansicht.
Richtig ist, dass die Ausschnitte so groß gezogen werden müssen, dass die maximale Anzahl von Datensätzen dort hineinpasst.
Das ist für die Eingabe sicher nicht mehr praktisch. Deshalb wird auch zwischen Eingabelayouts und Drucklayouts unterschieden. Das Drucklayout wird dann nur zum Druck oder zur Seitenansicht aufgerufen.
Wenn Du jetzt von 300 Datensätzen im Ausschnitt sprichst, erstreckt sich der Ausschnitt über einige Seiten. Das muss ohnehin nicht der Weisheit und der Übersicht letzter Schluss sein.
Es ist dann vermutlich besser, die Ausgabestruktur noch einmal zu überdenken. Es sei denn, Du liebst meterlange Papierausdrucke...

Konkret für Dein Bild: Wenn das Layout überall richtig auf angleichen eingestellt ist, bleiben die weißen Leerzeilen im Druck oder der Seitenansicht weg. Sicher!
 
Genau, ich muss das Druck- vom Eingabelayout trennen. Für das Eingabelayout eignen sich die Ausschnitte wirklich hervorragend.
Allerdings sind die markierten Freiflächen (es handelt sich nicht um leere Datensätze!) auch in der Seitenansicht und im Druck vorhanden. Das hatte ich schon getestet. Zusätzlich nerven die Scrolleisten.

Zwischenzeitlich fand ich aber ein FM-Dokument, das zumindest eine lückenlose Liste mit Feldhöhe gemäß Inhalt aufzeigt. Leider ist es Passwort-geschützt (obwohl es sich um ein Beispiel ohne kommerziellen Hintergrund handelt), somit für mich leider nicht nachvollziehbar, wie es realisiert wurde, um es an mein Projekt anzupassen. Aber es ist möglich! Wäre auch wirklich peinlich für FM.

Jetzt muss ich nur noch hinter das streng bewachte Geheimnis kommen!
 
Zurück
Oben Unten