Mal wieder Filemaker und die Beziehungen ;-)

Dieses Thema im Forum "Software" wurde erstellt von christiane, 26. Januar 2004.

  1. christiane

    christiane Active Member

    Hallo, es geht um folgendes:

    Es existieren zwei Datenbanken, eine namens "Künstlerverzeichnis" (KÜ) und eine namens "Werkverzeichnis" (WE).
    In KÜ bekommt jeder Künstler einen eigenen Datensatz, der Name wird im Feld "Name" eingetragen.
    In WE existieren pro Datensatz drei Felder: "Autor", "erster koautor", "zweiter koautor". Hier kann man aus Wertelisten, die von KÜ "Name" generiert werden, jeweils einen Eintrag auswählen. Soweit, so gut.
    Nun habe ich versucht, in KÜ eine Liste aller Werke, in denen der jeweilige Künstler als Autor, 1. oder 2. Koautor auftritt, über einen Ausschnitt mit einem Formelfeld zu realisieren. Also: alle Werke, an denen der Künstler irgendwie beteiligt war, sollen jeweils in einem einzigen Feld aufgelistet werden. Ich habe zwischen KÜ und WE drei Beziehungen definiert: (Name::autor), (Name::erster koautor), (Name::zweiter koautor). Zuletzt habe ich folgende Logikfunktion ausprobiert:

    Wenn(IstLeer(werke zweiter koautor::Zweiter Koautor); Wenn(IstLeer(werke erster koautor::Erster Koautor); werke autor::Werktitel; werke erster koautor::Werktitel); werke zweiter koautor::Werktitel)

    Diese Formel funktioniert aber nicht. Ausgegeben werden aber immer nur Werke, bei denen der Künstler Autor war.
    Weiß jemand Rat?
     
  2. Olley

    Olley Gast

    definiere in deiner datei we ein multikey-feld:

    typ: formel, text

    Autor & "¶" &
    erster_Autor & "¶" &
    zweiter_Autor
    ------------------------------------------
    definiere eine beziehung von kü zu we vom feld künstler_name zu diesem multikey.
    definiere den ausschnitt (auch portal genannt) über diese beziehung.

    ich hoffe das passt so...
     
  3. christiane

    christiane Active Member

    danke, werde ich mal probieren, muss mich erst mal schlau machen, was ein Multikey-Feld ist.

    ich melde mich.
     
  4. petervogel

    petervogel Active Member

    ich glaube du machst das zu umständlich. ich bin kein filemaker crack, habe aber schon einige jahre damit rumgetüftelt und kenne deine geschilderten probleme allzu gut.
    wie sind denn die künstler erfasst? nur mit namen, etc. oder wird ihnen auch bei der erfassung eine eindeutige ("serien")nummer zugeteilt? letzteres macht einem das leben ein ganzes stück einfacher, vor allem wenn es verschiedene künstler gibt, die z.b. den gleichen nachnamen oder vornamen haben. eine eindeutige zahl oder nummer für jeden künstler würde ich dringend empfehlen anzulegen. in deinem werkverzeichnis muss dann ein feld vorhanden sein, in dem alle nummern der beteiligten künstler aufgelistet werden. diese feld musst du nicht anzeigen lassen, aber es muss vorhanden sein.
    dann kannst du eine einzige beziehung definieren, die filemaker nutz, um die nummern in verbindung mit den künstlern zu bringen. du lässt dann alle werke nach der entsprechenden nummer durchsuchen und als ergebnis die werke auflisten, die die nummer des entsprechenden künstlers enthalten.
    hoffe das klingt jetzt nicht zu kompliziert. ich glaube du hast zu viele beziehungen definiert, um eine aufgabe zu erledigen. mit den logikfunktionen habe ich auch noch nie was richtig zum laufen gebracht.
     
  5. Olley

    Olley Gast

    Typ: Formel, Text

    Autor & "¶" &
    erster_Autor & "¶" &
    zweiter_Autor

    Autor, erster_Autor und zweiter_Autor ersetzt Du mit deinen Feldnamen Autor,1. Autor, 2. Autor.

    Tip: Zahlen sind in Feldnamen zu vermeiden, da diese dann, wie in obiger Formel, nicht funktionieren.
     
  6. christiane

    christiane Active Member

    dein Tipp hat funktioniert! :D

    Die 3 Autoren werden einfach in dem Schlüsselfeld gesammelt und in der zweiten DB mit dem Namen verglichen. dann wird der Werkname ausgegeben.

    Sehr einfach und effektiv, danke dir olley! :D
     
  7. christiane

    christiane Active Member

    danke auch dir petervogel, auch ungefähr die gleiche Weise. Aber Olley war schneller und das habe ich ausprobiert und es klappt.

    Jetzt im Nachhinhein ist es recht einfach. Wie immer :embar:
     
  8. Olley

    Olley Gast

    beachte aber trotzdem den tipp von peter, da jeder datensatz nur durch eine seriennumer oder datensatz-id eine sicher eindeutigkeit erhält. es kann ja auch zweimal den herrn meyer geben oder hans meyer wird einmal fälschlicherweise mit zwei leerstellen zwischen vor,- und nachnamen eingegeben.
     
  9. christiane

    christiane Active Member

    es gibt garantiert mehrere Einträge in der einen DB. Das Ergebnis wird in einem Ausschnitt als Liste dargestellt.

    Also: Die Werke werden von einem Künstler aus der Werke-Datenbank gesammelt und als Liste in der Künstlerdatenbank angegeben.

    Man kann also sehen: Herr Müller hat 10 Bilder gemalt und kann über diese Liste in der Künstlerdatenbank zu dem Datensatz der Werkedatei kommen.

    Hast du dafür vielleicht noch ein paar Tipps? :confused:
     
  10. Olley

    Olley Gast

    erstelle in der datei we ein script "werke anzeigen":

    -gehe zu layout (eines deiner layouts)
    -fenster umschalten (maximieren)

    platziere in kü in deinem ausschnitt auf der ersten reihe eine taste. erstelle ein script mit folgenden befehlen:

    -datensatz/abfrage verlassen
    -gehe zu bezugsdatensatz (künstler::multikey-feld)
    option "nur bezugsdatensätze zeigen" nicht
    vergessen!
    -script ausführen (externes script) das script aus datei we "werke anzeigen"
    -fenster umschalten ausblenden

    beleg die taste mit diesem script.

    so, hoffe das ist verständlich...
     
  11. Olley

    Olley Gast

    jo akiem, ich hatte dir übrigens noch ne mail geschrieben. haste wohl übersehen...
     
  12. christiane

    christiane Active Member

    danke olley, So hatte ich mir das auch gedacht.
    Nur habe ich es irgendwie "einfacher" gemacht:

    Einfach ein Script definiert in der Künsterdatenbank (da gibt es momentan nur ein Layout) -> gehe zu Bezugsdatensatz und die Beziehung angegeben.

    Und wenn ich die Taste betätige, die dieses Script ausführt, dann komme ich zu dem Datensatz in der WerkDB.

    Gibt es einen Grund, warum das so nicht gut ist?

    Gruß
    Christiane
     
  13. Olley

    Olley Gast

    nee gibt keinen grund.
    aber bei größeren db's ist es oft sinnvoll mit solchen scripts zu arbeiten. es könnte ja sein, dass du in der werkedatei die datensätze gleich noch nach irgendwelchen kriterien sortieren, oder die bezugsdatensätze drucken möchtest. dann brauchst du in deiner bezugsdatei (werke) so oder so ein script.
     
  14. christiane

    christiane Active Member

    danke, wenn ich wieder ein Problem mit Filemaker habe weiß ich jetzt, an wen ich wenden kann :D
    Christiane
     
  15. Olley

    Olley Gast

    email, icq usw stehen im profil.
     

Diese Seite empfehlen