Ansicht filtern mit mehreren Optionen
Habe ein Formular mit 3 Abfrage Kriterien myj= Vertrag und myDatum=Datum und dann mySuchwort=Such Wort. Es funktioniert schon gut. Ich kann kombiniert nach Vertrag(myJ) und Datum(myDatum) filtern. Nur schaffe ich es nicht mySuchwort mit den anderen zu verbinden. Wie sollte ich zb mySuchwort und myDatum schreiben das es mir beide herausfiltert? Hänge da fest, vielleicht kann mir ja bitte jemand sagen wie die If Suche zu schrieben ist. Vielen Dank schönen Sommer. lg Claus
let my := this;
let myJ := text(Vertrag);
let mySuchwort := text('Such Wort');
let myDatum := text(Jahr);
if mySuchwort then
(select 'Infos Verträge')[(not my.mySuchwort or contains(lower(Betreff), lower(my.mySuchwort))) and
(not my.mySuchwort or contains(lower(Betreff), lower(my.mySuchwort)))]
else
if myDatum and myJ then
select 'Infos Verträge' where year(Datum) = myDatum and text(Vertrag) = myJ
else
if myJ then
select 'Infos Verträge' where text(Vertrag) = myJ
else
if myDatum then
select 'Infos Verträge' where year(Datum) = myDatum
else
select 'Infos Verträge'
end
end
end
end
19 Antworten
-
vielleicht habe ich es zu kompliziert geschrieben würde gerne die 2 Suchen zusammenführen das ich alles zusammen suchen kann. Verstehe nur nicht wie ich die 2. Suchabfrage mit der ersten kombiniere. Vielleicht kann mir da jemand einen Tipp bitte geben. Ich bin nur Hobby Bastler :) und komm da nicht drauf. Vielen Dank
if mySuchwort then
(select 'Infos Verträge')[(not my.mySuchwort or contains(lower(Betreff), lower(my.mySuchwort))) and
(not my.mySuchwort or contains(lower(Betreff), lower(my.mySuchwort)))]
elseden 2. Suchkriterien hinzufügen.
if myDatum and myJ then
select 'Infos Verträge' where year(Datum) = myDatum and text(Vertrag) = myJ
else -
Hallo Claus, wenn ich für eine Ansicht mehrere Filter habe, die beliebig miteinander kombinierbar sein sollen, arbeite ich i. d. R. mit einer Variablen für die Kombination (im Beispiel unten 'myKombi' genannt). Damit bleibt das Script übersichtlich und lässt sich auch relativ schnell erstellen, weil man die Variante mit allen Filtern ("XXX") per Copy & Paste in die anderen Kombis übernehmen kann und dort jeweils nur die nicht zutreffenden Filter entfernen muss.
Beispiel-Schema für eine Ansicht mit drei Filtern:
let me := this; let myKombi := ""; myKombi := myKombi + if FilterA then "X" else "_" end; myKombi := myKombi + if FilterB then "X" else "_" end; myKombi := myKombi + if FilterC then "X" else "_" end; switch myKombi do case "X__": select Tabelle[FeldA = me.FilterA] case "_X_": select Tabelle[FeldB = me.FilterB] case "__X": select Tabelle[FeldC = me.FilterC] case "XX_": select Tabelle[FeldA = me.FilterA and FeldB = me.FilterB] case "X_X": select Tabelle[FeldA = me.FilterA and FeldC = me.FilterC] case "_XX": select Tabelle[FeldB = me.FilterB and FeldC = me.FilterC] case "XXX": select Tabelle[FeldA = me.FilterA and FeldB = FilterB and FeldC = me.FilterC] default: select Tabelle end
Bei umfangreicheren Tabellen kann man die Datensätze auch in ein Array übernehmen und dann dieses filtern.
-
Ach so, entgegen der sonstigen Ninox-Empfehlung würde ich bei dynamischen Ansichten im "select" statt "where" immer eckige Klammern nutzen, da es sonst zu Problemen bei der Aktualisierung kommen kann.
-
Schau dir mal folgenden Beitrag an:
https://forum.ninox.de/t/m1y6pl5/optimieren-von-mehrfach-filter-in-ansichten-eines-dashboards -
let myJ := text(Vertrag);
let mySuchwort := lower(text('Such Wort'));
let myDatum := text(Jahr);
(select 'Infos Verträge') where (not mySuchwort or contains(lower(Betreff), mySuchwort)) and (not myDatum or year(Datum) = myDatum) and (not myJ or text(Vertrag) = myJ)
-
Erstmals Dank für Eure Hilfe. Habe mir von die Datenbank angesehen und konnte einige Sachen zu nutze machen. Hatte mehrer Probleme nun ein paar weniger ;) danke
Planox.pro dein Ansatz finde ich auch sehr Interessant komm nur nicht ganz drauf wie das funktoniert. Könnte man vielleicht eine Beispieldatenbank dazu bekommen, dass ich das besser Verstehe oder gibt es in "Webinar de" ein Beispiel welches ich mir anschauen könnte. Vielen Dank für die tollen Tipps. Top Forum und super nette Leute
Content aside
-
1
„Gefällt mir“ Klicks
- vor 1 MonatZuletzt aktiv
- 19Antworten
- 110Ansichten
-
7
Folge bereits