0

mehrere Filter in einer Ansicht Möglich?

Hänge zur Zeit fest. Habe eine Tabelle wo ich eine Verknüpfung habe zur Hockey Tabelle (Feld Stato) und (Feld Cognome) In einer leeren Tabelle habe ich mir ein Dropdown mit Status (wird Stato abgerufen) zusammen gebaut funktioniert bei mir. Zusätzlich habe ich ein Suchen Feld zum Suchen in der Tabelle Hockey (Feld Cognome) funktioniert auch die Suche. Ich versuche vergebens dass mir entweder eine oder beide Suchen zusammen arbeiten.

Es wird in einer Ansicht wiedergegeben. Es klappt nur die Letzte Suche wie kann ich es schreiben das entweder beide zugleich den Wert suchen oder eben nur eine Suche (andere leer). Ist es Möglich eine Suche auszuführen und anschliessend in der Ansicht weiter zu filtern? oder sollte ich versuchen die View in eine Temporäre Tabelle zu schreiben (kenne aber nicht den Befehl wie man dass machen kann, würde mich interessieren vielleicht mit einen Button der den gesamten Inhalt überträgt von der Ansicht vieleicht kann es mir einer schreiben)

Ist in einer Ansicht möglich mehrere Filter einzelen als Button aufzurufen?

let myTyp := Status;
if myTyp = 1 then
 (select Hockey)[text(Stato) = "Pagata"]
else
 if myTyp = 2 then
  (select Hockey)[text(Stato) = "Accettata / Documentazione ricevuta"]
 else
  if myTyp = 3 then
   (select Hockey)[text(Stato) = "Rifiutata"]
  else
   if myTyp = 4 then
    (select Hockey)[text(Stato) = "In pagamento"]
   else
    if myTyp = 5 then
     (select Hockey)[text(Stato) = "Inviata / In attesa di documentazione"]
    else
     if myTyp = 6 then
      (select Hockey)[text(Stato) = myTyp]
     end
    end
   end
  end
 end
end;

hier liegt mein Problem wie kann ich beide Suchen kombinieren oder auch eine leer lassen?

let mySuche := lower(Name);
if Name != null then
 select Hockey where contains(lower(Cognome), mySuche)
else
 select Hockey
end

Vielen Dank für Hilfestellungen und sorry wegen der vielen Fragen Grüsse Claus

3 Antworten

null
    • Ninox-Professional
    • planoxpro
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Hallo Claus, mein Vorschag wäre, die Status-Bezeichnungen "Pagata", "Accettata ...“ usw. auch wieder genau so als Texte in das Filter-Auswahlfeld zu schreiben. Dann wäre auch die Abfrage relativ überschaubar:

    let myStatus := text(Status);
    let myName := lower(Name);
    if Status and Name then
       select Hockey where text(Stato) = myStatus and contains(lower(Cognome), myName)
    else
        if Status then
           select Hockey where text(Stato) = myStatus
        else
            if Name then
                select Hockey where contains(lower(Cognome), myName)
            else
                select Hockey
            end
        end
    end

    • Claus.1
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Macht genau das was es soll. Vielen Danke

    Würde mir bitte jemand diese Punkte erklären Danke

    1.Ist es Möglich eine Suche auszuführen und anschliessend in der Ansicht weiter zu filtern?

    2. Die View in eine Temporäre Tabelle zu schreiben (kenne aber nicht den Befehl wie man dass machen kann, würde mich interessieren vielleicht mit einen Button der den gesamten Inhalt überträgt von der Ansicht vielleicht kann es mir jemand kurz Erläutern)

    Vorerst vielen Dank Claus

    • Ninox-Professional
    • planoxpro
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Zu 1: Stufenweises Filtern ist m. W. nicht möglich, aber wenn man wie oben mehrere Such-/Filterfelder kombiniert, hat man ja einen ähnlichen Effekt. Außerdem kann man auch in eingebetteten Tabellen-Ansichten für jede Spalte einen Filter setzen, gruppieren usw.

    Zu 2.: Das Schreiben der gefilterten Ansicht in eine temporäre Tabelle wäre kein Problem. Man greift dabei allerdings nicht auf die Ansicht zu, sondern direkt auf die darin gezeigte Tabelle und nutzt dieselben Filter wie bei der Ansicht. Wobei die temporäre Tabelle, nennen wir sie mal TEMPTABELLE, mit den benötigten Feldern natürlich bereits existieren müsste (Tabelle 'Hockea' einfach duplizieren). Dann könnte man es so versuchen:

    let myStatus := text(Status);
    let myName := lower(Name);
    for xy in if Status and Name then
            select Hockey where text(Stato) = myStatus and contains(lower(Cognome), myName)
        else
            if Status then
                select Hockey where text(Stato) = myStatus
            else
                if Name then
                    select Hockey where contains(lower(Cognome), myName)
                else
                    select Hockey
                end
            end
        end
        let newRec := create TEMPTABELLE
        newRec.(
            Stato := xy.Stato;
            Cognome := xy.Cognome;
            FELD3 := xy.FELD3;
            FELD4 := xy.FELD4;
            usw. ................
            )
    end

     

    FELD3 und FELD4 stehen hier stellvertretend für alle Felder, die in die temporäre Tabelle übertragen werden sollen. Die Liste kann ggf. also deutlich länger werden.

    Ich habe das allerdings jetzt nicht getestet und kann deshalb nicht sicher sagen, ob die xy-Schleife mit den verschachtelten if-Abfragen tatsächlich so funktioniert. Am besten, einfach mal ausprobieren. Ansonsten müsste man den Rattenschwanz nach 'newRec' halt nach jedem 'select' wiederholen.