0

Ganze Tabelle filtern mit DAF oder DMAF

Hallo Community;

anstelle des Suchfeldes in der Tabellenansicht, möchte ich mit den Suchkriterien aus der

Tabelle-F.Filtertext alles in der Tabelle1 anzeigen lassen.

Die Aufgabe ist also: Standardfilter mit einem Klick.

Im ersten Schritt soll gefiltert werden mit Dynamischen Auswahlfeld. Evtl. wenns läuft im zweiten Schritt mit Dynamischen Mehrfachauswahlfeld:

  1. DAF ist in der Tabelle1 zeigt die Tabelle-F.Filtertext
  2. DMFA wie 1

Bekomme alle Texte beider Tabellen angezeigt, aber nicht gefiltert:

Aktuell Suche in einigen Spalten, es soll aber Alles durchsucht und angezeigt werden.

Code filtert nicht. Suche und teste mir einen Wolf. Jetzt komme ich nicht weiter. Wie sieht Eurer Tip aus?

 

Spalten der Tabelle-F: Nr;Filtertext

Tabelle1: Nr;Datum;Projekt;Start;Ende;Beschreibung;Einheit;Zuordnung;DAF

 

let xSuche := (select Tabelle1).lower(text(DAF));

select Tabelle1 where lower(text(Beschreibung)) or lower(text(Projekt)) or lower(text(Zuordnung)) like xSuche

2 Antworten

null
    • Ninox Widgets & User Interfaces
    • Jakob_Jordan
    • vor 19 Stunden
    • Gemeldet - anzeigen

    Wir nutzen immer die Funktion testx() für die Suchfunktion von Listen. Das hat bislang immer sehr gut geklappt. Ggf. kann das noch optimiert werden. testx() ist schon fast eine Wissenschaft für sich. 
    Hier ein Beispiel einer gefilterten Liste von uns: 

    let current := this;
    let search := Suche;
    let person := Person;
    (select Auftrag
        where currentStatus.Sortierung >= 2 and currentStatus.Sortierung <= 4 and
                helper_logistikFinished != true and
            if search != null then
                    testx(text(currentStatus.Status) + "," + 'Auftragsnr.' + "," + Objektnummer  +
                    "," +
                    "keepThisTextAtTheEnd ,", "(?:" + search + ")\.*[^]", "gi")
                else
                    true
                end and
        if person != null then
                Monteur = person
            else
                true
            end) order by -'Erstellt am'

      • Maurice
      • vor 10 Stunden
      • Gemeldet - anzeigen

       Wir haben noch weiter gebaut:

      In jeder Tabelle, in der gesucht werden soll und durch eine Ansicht/arcrider Table die gefunden Daten angezeigt werden sollen, gibt es ein Funktionsfeld "SuchTags", in das die Felder kommagetrennt eingetragen werden, also z.B so etwas:

      Vorname + "," + Name + "," + join(Kurse.Kursname,",") + "," + Wohnort

      Wir haben ein Textfeld (Globalsuche), in das man dann wie folgt suchen kann:

      Suchstrings mit Leertaste getrennt eingeben, diese werden mit UND verknüpft
      Klammert man einen Suchstring mit not() ein, wird dieser ausgeschlossen
      Mit einem Auswahlfeld (KonjungtionSuche) kann man zwischen "UND" und "ODER" wählen. Bei "ODER" werden die Suchstrings mit ODER verknüpft, außer mit not() geklammerte Strings, die mit UND verknüpft werden. Der Code dazu:

      let sArr := split(current.Globalsuche, " ");
      let regEx := "";
      if KonjungtionSuche = 1 or KonjungtionSuche = null then
          regEx := "^" +
              for i from 0 to cnt(sArr) do
                  let suchwort := item(sArr, i);
                  if substr(suchwort, 0, 4) = "not(" and substr(suchwort, length(suchwort) - 1, 1) = ")" then
                      "(?!.*" + substr(suchwort, 4, length(suchwort) - 5) + ")"
                  else
                      "(?=.*" + item(sArr, i) + ")"
                  end
              end +
              ".*"
      else
          regEx := "^";
          for i from 0 to cnt(sArr) do
              let wort := item(sArr, i);
              if substr(wort, 0, 4) = "not(" and substr(wort, length(wort) - 1, 1) = ")" then
                  let negWort := substr(wort, 4, length(wort) - 5);
                  regEx := regEx + "(?!.*" + negWort + ")"
              end;
              "// Positive Bedingungen (alle anderen Wörter)";
              let positive := "";
              for i from 0 to cnt(sArr) do
                  let wort := item(sArr, i);
                  if not (substr(wort, 0, 4) = "not(" and substr(wort, length(wort) - 1, 1) = ")") then
                      positive := positive + wort + "|"
                  end
              end;
              "// Entferne letztes | falls vorhanden";
              if length(positive) > 0 then
                  positive := substr(positive, 0, length(positive) - 1);
                  regEx := regEx + "(?=.*(" + positive + "))"
              end;
              regEx := regEx + ".*"
          end
      end;
      

      Und dann weiter  wie bei Jakob:

      filteredList := (list01[if current.Globalsuche != null then
                          testx(SuchTags + "," + "keepThisTextAtTheEnd ,", regEx, "gi")
                      else
                          true
                      end and
      

      wobei list01 mit select Tabelle definiert ist.

      Jetzt wollen wir ein instant-search umsetzen (irgendwo gab es ein Video dazu), also dass schon bei der Testeingabe in das Suchfeld gesucht wird und nicht erst nach Enter-Taste.

Content aside

  • vor 10 StundenZuletzt aktiv
  • 2Antworten
  • 40Ansichten
  • 3 Folge bereits