5 Replies Latest reply on Aug 31, 2015 1:55 PM by kip

    Suchscript modifizieren

    kip

      Hallo in die Runde,

       

      ich habe eine Frage zu einem Filter-Script, das ich bei meiner ersten Filemaker-Datenbank einsetze. Dazu habe ich ein globales Feld als Suchfeld eingerichtet, auf dem Layout abgelegt und dort mit folgendem Trigger auf Objekt ändern versehen:

       

      Fehleraufzeichnung setzen [Ein]

      Wenn [Start::SuchfeldProjekte=””]

        Alle Datensätze zeigen

        Alle Scripts abbrechen

      Ende (wenn)

      Variable setzen [$suchfeld; Wert:Start::SuchfeldProjekte]

      Suchenmodus aktivieren [Wiederherstellen]

      Ergebnismenge suchen [Wiederherstellen]

      Wenn [Hole (AnzahlGefundeneDatensätze) = 0]

        Gehe zu Feld [Start:SuchfeldProjekte]

        Alle Scripts abbrechen

      Ende (wenn)

      gehe zu Feld [Start::SuchfeldProjekte]

       

      Als optionalen Scriptparameter habe ich "filter_Projekte|Projekte::Projekttitel" eingestellt - aber wenn ich mich richtig erinnere, ist das ein Rudiment aus  meinen diversen Versuchen und hat wahrscheinlich keine Funktion mehr ;-)

       

      Die Suchfunktion funktioniert so weit gut - in einem Layout werden die angezeigten Projekte je nach Eingabe von Buchstabenfolgen live reduziert und beim Löschen der letzten Buchstaben wieder eingeblendet, bis die ursprüngliche Liste wieder angezeigt wird.

       

      ABER

       

      Wenn ich das selbe Script von einem anderen Layout aus verwende, in dem ich die Liste der Projekte bereits eingeschränkt oder anders gruppiert habe (zum Beispiel nur Projekte im Zeitraum von ... bis ... oder nur im Ort ...) und dann die letzten Zeichen der Suchfolge lösche, werden mir alle Datensätze angezeigt und nicht die bereits gefilterte und ggf. sortierte Liste. Es gibt doch sicher einen geschickten Weg, das Script so zu modifizieren, dass es wieder zu der jeweiligen ursprünglichen Liste zurückkehrt, d.h. bei verschiedenen Layouts mit verschiedenen Vorauswahlen zum jeweiligen Urzustand.

       

      Da ich auch nach einigem Probieren noch zu keiner Lösung für mein Problem gekommen bin, würde ich mich hier über eine kleine Unterstützung freuen.

       

      ( da ich ein Filemaker-Newbie bin wäre ich bei der Gelegenheit auch noch für eine Einschätzung dankbar, ob das oben angegebene Script überhaupt "Stand der Technik" ist. Es scheint ja viele Wege zu geben, um Datensätze eines Layouts mit einem Suchfeld zu filtern. Mir ist nur noch nicht klar, ob ich bei meiner (durchaus funktionierenden) Lösung einen guten Standard eingebaut habe, oder ob das auch geschickter geht ;-)

       

      Einen schönen Abend noch,

      kip

        • 1. Re: Suchscript modifizieren
          erolst

          kip wrote:

          Als optionalen Scriptparameter habe ich "filter_Projekte|Projekte::Projekttitel" eingestellt - aber wenn ich mich richtig erinnere, ist das ein Rudiment aus  meinen diversen Versuchen und hat wahrscheinlich keine Funktion mehr ;-)

           

          Wenn du einen Script Parameter angibst, diesen aber im Script nicht verwendest, kann das zwar verwirrend sein, richtet aber keinen Schaden an (anders als in der gegenteiligen Konstellation).

           

          Für dein eigentliches Problem probiere mal:

           

          Fehleraufzeichnung setzen [Ein]

          Wenn [ IstLeer ( Start::SuchfeldProjekte ) ]

          # [ kanonische Form, um einen Ausdruck auf <leer> zu testen ]

            Alle Datensätze zeigen

            Alle Scripts abbrechen

          Ende (wenn)

          Suchenmodus aktivieren [ohne Wiederherstellen]

          Feldwert setzen [ Projekte::Projekttitel ; Wert:Start::SuchfeldProjekte ]

          Ergebnismenge einschränken [ohne Wiederherstellen]

          Gehe zu Feld [Start::SuchfeldProjekte]

          # [ da willst du ja in jedem Fall hin, und das Script wird hier ohnehin beendet, also ist der Wenn[]-Block überflüssig ]

           

          Unter Entwicklern wird im allgemeinen die Kombination

           

          Suchenmodus aktivieren [ohne Wiederherstellen]

          Feldwert setzen [ … ]

          # [ evtl. weitere Kriterien, oder Abfragen ]

          Ergebnismenge finden (oder einschränken/ erweitern)

          # [ ist derselbe Ablauf wie beim manuellen Suchen ]

           

          bevorzugt gegenüber

           

          Ergebnismenge finden [ Wiederherstellen ]


          weil man 1. direkt im Script explizit sieht, wo und was gesucht wird, und 2. das Interface im Finden-Dialog m. E. rel. unintuitiv ist.


          Aber wenn du


          Ergebnismenge finden [ Wiederherstellen ]


          verwendest, musst du nicht erst den Suchenmodus aktivieren.

          • 2. Re: Suchscript modifizieren
            kip

            Hallo erolst,

             

            vielen Dank für Deine schnelle Rückmeldung! Das Skript wirkt tatsächlich etwas aufgeräumter. Ich habe es mit Deinen Modifikationen ausprobiert, aber dabei festgestellt, dass jetzt nur noch die Projekttitel durchforstet werden. In meiner Ursprungsversion hatte ich im Suchenmodus noch weitere Felder angegeben, die ebenfalls durchsucht werden sollen (hatte ich bei meiner Beschreibung vergessen).

             

            Ich habe meine Projekte im Layout nach einem vorangestellten Zwischenbereich sortiert (abgeschlossen, beauftragt, in Planung, etc.). Wenn der Suchbegriff jetzt aus dem Suchfeld gelöscht wird, erscheinen die Projekte aber nur als einfache Liste ohne die Zwischenbereiche. Hast Du dafür vielleicht auch noch einen schlauen Tipp?

             

            kip

            • 3. Re: Suchscript modifizieren
              erolst

              kip wrote:

              Ich habe es mit Deinen Modifikationen ausprobiert, aber dabei festgestellt, dass jetzt nur noch die Projekttitel durchforstet werden. In meiner Ursprungsversion hatte ich im Suchenmodus noch weitere Felder angegeben, die ebenfalls durchsucht werden sollen (hatte ich bei meiner Beschreibung vergessen).

              War das dann eine UND-Suche, also muss der Suchbegriff in allen Feldern erscheinen …? Vielleicht erklärst du das noch ein bisschen genauer.

              kip wrote:

              Ich habe meine Projekte im Layout nach einem vorangestellten Zwischenbereich sortiert (abgeschlossen, beauftragt, in Planung, etc.). Wenn der Suchbegriff jetzt aus dem Suchfeld gelöscht wird, erscheinen die Projekte aber nur als einfache Liste ohne die Zwischenbereiche. Hast Du dafür vielleicht auch noch einen schlauen Tipp?

              Das hat eigentlich nichts mit der Suche zu tun; einzig entscheidend für das Erscheinen eines Auswertungsbereichs ist, dass sein Auswertungsfeld (hier also wohl „Status”) in der aktuellen Sortierung enthalten ist. Du solltest einfach einen abschließenden ”Datensätze sortieren“-Schritt zum Skript hinzufügen, in dem du nach „Status“ sortierst.

              • 4. Re: Suchscript modifizieren
                kip

                In der Ursprungsversion wurden alle Datensätze ausgefiltert, bei denen in keinem der angegebenen Felder die Buchstabenfolge zu finden war (sorry: bin wie gesagt kein Programmierer ;-)

                In dem Skriptschritt "Ergebnismenge Wiederherstellen" hatte ich bei den Suchanfragen einige Optionen angegeben, wie zum Beispiel

                - Aktion: Datensätze suchen / Kriterien: Projekte::Projekttitel [$suchfeld]

                - Aktion: Datensätze suchen / Kriterien: Projekte::Projektort [$suchfeld]

                - Aktion: Datensätze suchen / Kriterien: Projekte::Projektleiter [$suchfeld]

                Das fühlte sich zwar etwas hakelig an, hat aber funktioniert. Ich würde es bei "Ergebnismenge einschränken" wahrscheinlich wieder so machen, aber vielleicht gibt es ja auch einen geschickteren Schritt dafür?

                 

                Du solltest einfach einen abschließenden ”Datensätze sortieren“-Schritt zum Skript hinzufügen, in dem du nach „Status“ sortierst.

                Stimmt - da hätte ich eigentlich auch selbst drauf kommen können. Danke für den Tipp ;-)

                • 5. Re: Suchscript modifizieren
                  kip

                  kleiner Nachtrag: mit "Ergebnismenge einschränken" funktioniert es genau so wie zuvor, d.h. alle hier in den Optionen angegebenen Felder werden durchsucht. Und die Funktion "Datensätze sortieren" tut auch das, was sie soll. Langsam beginnt Filemaker richtig Spaß zu machen ;-)

                   

                  Gruß,

                  kip