Filemaker: Datensatzliste der aktuellen Tabelle im Ausschnitt/Portal

papalapapp

papalapapp

Aktives Mitglied
Thread Starter
Dabei seit
27.12.2006
Beiträge
842
Reaktionspunkte
68
Hi,

ich versuche gerade in einem Formularlayout eine Liste der Datensätze der aktuellen Tabelle darzustellen. Im Prinzip ganz einfach mit einem zweiten Auftreten der Tabelle.

Allerdings fehlt dann die Funktion, dass bei einer Suche nur die gefundenen Datensätze angezeigt werden. Das Portal zeigt dann alle an da ja nur "die erste" Tabelle durchsucht wird.

Wie könnte man es bewerkstelligen, dass der Ausschnitt nur die gefundenen Datensätze anzeigt? Am einfachsten wäre es, wenn der Ausschnitt die Datensätze der eigenen Tabelle anzeigen könnte. Ist das irgendwie möglich?
 
Die Lösung des Problems führt vermutlich über die richtige Wahl des Beziehungsfelds und ggf. auch über die Filterung des Ausschnitts.
Oder Du kommst über die Suche in dem zweiten Auftreten der Tabelle weiter.
 
Was meinst du mit der Wahl des Beziehungsfeldes?

Das mit dem Filter habe ich auch schon überlegt, habe aber keine Statusfunktion dafür gefunden. Da müsste man per Skript die Datensätze markieren und wieder ent-markieren...

Wie würdest du die Suche in der zweiten Tabelle umsetzen? Das wäre vielleicht sie sicherste Möglichkeit.
 
Ohne Beziehung kannst Du doch die Tabelle gar nicht in einem Ausschnitt anzeigen. Oder irre ich mich da?

Suche in der zweiten Tabelle machst Du mit einem Layout, das die Werte der zweiten Tabelle anzeigt. Suchfunktion wie üblich, ggf. Scriptgesteuert, dann lässt sich das auch von dem Layout der ersten Tabelle aus machen.
 
Im Moment ist die Beziehung eine globale Konstante (1) in beiden Auftritten. Es wäre ideal wenn man über die Beziehung die Suchergebnisse filtern könnte.

Kann man in einem Skript den letzten Suchbegriff und das betreffende Feld abfangen? (Ich habe nur "Hole(SchnellsucheText)" gefunden.) Die Suche ist so gestaltet, dass mit einem Button auf Suchmodus umgestellt wird und der User das Suchkriterium in das entsprechende Feld eingibt, z.B. Datum, Betrag etc..
 
Die Filterung in der Ausschnittdefinition liegt mit der Definition fest.

Für erneute Suchen:
Die letzten Suchen sind ohnehin in FileMaker zur Wiederholung zugänglich.

Was fehlt denn inzwischen eigentlich noch?
 
Sorry, das war etwas knapp, oder ich steh gerade auf'm Schlauch. Gerade fühle ich mich noch keinen Schritt weiter.

Am einfachsten wäre das Filtern des Ausschnitts. So wie ich das sehe, gibt es aber die notwendigen Funktionen dafür nicht:
"Datensatz-ist-Teil-der-Ergebnismenge = WAHR"

Kann man die Suche auch per Skript wiederholen und auf die zweite Tabelle anwenden?
 
Bei Gelegenheit könntest Du mal erläutern, weshalb Dir ein Ausschnitt wichtig ist.
Warum tut es nicht eine übliche Suche, ggf. im eigenen Layout, ggf. scriptunterstützt?

Am einfachsten wäre das Filtern des Ausschnitts. So wie ich das sehe, gibt es aber die notwendigen Funktionen dafür nicht:
"Datensatz-ist-Teil-der-Ergebnismenge = WAHR"

Kann man die Suche auch per Skript wiederholen und auf die zweite Tabelle anwenden?

Wolltest Du nicht sowieso im zweiten Auftreten der Tabelle suchen? Wenn Du das gemacht hast, rufe diese Suche erneut auf, ändere sie ggf. ab.

Vielleicht solltest Du das Problem etwas konkreter darstellen.
 
Ok, es ist so: Die Datensätze der Tabelle werden in einer Formularansicht dargestellt und bearbeitet. Z.B. Datum, Textfeld, etc.. Da es um eine kontinuierliche Erfassung von Datensätzen geht, ist auf dem Formular auch eine Liste der bisher erfassten Einträge zur Übersicht (das besagte Portal).

Eine Suche sollte so ablaufen: In den Suchmodus wechseln > Suchbegriff in ein Formularfeld eingeben > Enter dürcken. Das Resultat sind dann wie erwartet die Suchergebnisse (z.B. 3 von 100 Datensätzen). Das Portal zeigt aber nach wie vor alle (100) Datensätze. Es sollte aber nur die gefundenen Datensätze zeigen (3).

Das Portal zeigt die Datensätze der Tabelle in ihrem zweiten Auftreten, verknüpft mit einer ID die in beiden Tabellen und allen Datensätzen "1" ist.
 
Es könnte sein, dass das Beziehungsfeld mit dem globalen Wert 1 hier stört.

Vielleicht kommst Du weiter, wenn Du (sinngemäß) das Datum als Beziehungsfeld nimmst. Dann sollten im Normalfall im Ausschnitt alle Eingaben für den 1.11.2012 aufgelistet werden, wenn in der Formularansicht der Datensatz den 1.11.2012 hat.
 
Oha, sehr interessant. Das wäre ja "sinngemäß", dieses Feld "universal" zu gestalten: Alle aufgerufenen Datensätze erhalten eine Zufallszahl, die dann ebenfalls alle Datensätze im zweiten Auftreten erhalten. Es werden folglich nur die gezeigt, die in der ersten Tabelle diese Zufallszahl haben.

Da es jedes mal eine neue Zahl ist, würde es dann auch mit "alle Datensätze zeigen" funktionieren. D.h. man müsste diese Markierung dann niemals "zurücksetzen".

Ich hoffe dass ich da jetzt keinen Denkfehler gemacht habe und die passenden Skript-Trigger finde.
 
Eine Suche sollte so ablaufen: In den Suchmodus wechseln > Suchbegriff in ein Formularfeld eingeben > Enter dürcken. Das Resultat sind dann wie erwartet die Suchergebnisse (z.B. 3 von 100 Datensätzen). Das Portal zeigt aber nach wie vor alle (100) Datensätze. Es sollte aber nur die gefundenen Datensätze zeigen (3).
Das funktioniert nur, wenn die Beziehung zwischen den beiden Tabellenauftritten nicht über ein global gespeichertes Formelfeld mit dem Inhalt "1" definiert ist, sondern über den jeweiligen Suchbegriff.

Wenn es sich um über eine überschaubare Anzahl von Feldern handelt, in denen gesucht werden kann, dann erstellt man ein "Suchfeld", Typ "Formel", in dem alle Felder , getrennt durch Leerzeichen, noch einmal zusammengefasst werden. Ein weiteres Feld, Typ Text, global gespeichert, dient dann als Ausgangsbasis für die Beziehungsdefinition. In dieses Feld wird dann jeweils der aktuell verwendete Suchbegriff eingetragen.

Mit einer gewissen "Unschärfe" bei den "Suchergebnissen" wird man allerdings auch bei dieser Konstruktion leben müssen, da Zahlen und Datumsangaben in einem Textfeld ja nicht eindeutig abgebildet werden...
 
Also, das Filtern über die Beziehung habe ich nicht hin bekommen. Es funktioniert aber über den Filter im Portal.

1. Die Tabelle hat ein zusätzliches Feld "id_filter" (quasi ein flag-Feld)
2. Für jede Suche wird eine neue ID generiert. Datensätze der Ergebnismenge erhalten diese ID als Marierung per Skripttrigger (Bei Modus ändern / Feldwerte ersetzen / zB. Zufallszahl oder fortlauftend)
3. Der Filter im Portal ist: Tabelle1::id_filter = Tabelle2::id_filter

Was leider nicht funktioniert, ist der "Alle zeigen" Button in der Menüleiste weil ich dafür keinen Trigger gefunden habe. Es werden dann zwar wieder alle Datensätze angezeigt, aber das Portal wird nicht aktualisiert weil das Skript nicht ausgeführt und daher die Markierung nicht neu gesetzt wird. Für meine Lösung spielt das aber keine Rolle weil die Menüseiste nicht verwendet wird. (Eigene Buttons auf dem Layout, die dann einfach das Skript mit ausführen.)



114647d1356189687-filemaker-datensatzliste-aktuellen-bildschirmfoto-2012-12


114646d1356189687-filemaker-datensatzliste-aktuellen-bildschirmfoto-2012-12


114645d1356189687-filemaker-datensatzliste-aktuellen-bildschirmfoto-2012-12


114644d1356189687-filemaker-datensatzliste-aktuellen-bildschirmfoto-2012-12
 

Anhänge

  • Bildschirmfoto 2012-12-22 um 15.19.01.png
    Bildschirmfoto 2012-12-22 um 15.19.01.png
    16,4 KB · Aufrufe: 292
  • Bildschirmfoto 2012-12-22 um 15.18.34.jpg
    Bildschirmfoto 2012-12-22 um 15.18.34.jpg
    61,3 KB · Aufrufe: 317
  • Bildschirmfoto 2012-12-22 um 16.06.41.jpg
    Bildschirmfoto 2012-12-22 um 16.06.41.jpg
    28,3 KB · Aufrufe: 309
  • Bildschirmfoto 2012-12-22 um 16.14.09.png
    Bildschirmfoto 2012-12-22 um 16.14.09.png
    47,6 KB · Aufrufe: 281
Zurück
Oben Unten