Filterfunktion Problem
Hey alle zusammen,
folgendes Problem. Ich habe ein Dashboard erstellt und dort drei Filterungen. Einmal eine “Produktkategorie”, “Suche” und “Country”.
Allerdings bekomme ich die Filterung des Countrys nicht hin. Kann mir hierzu jemand weiterhelfen?
let productCategory := text(“Product category:”);
let farmerCountry := text(“Country:”);
let mySuchtext := lower(“Suche:”);
if “Product category:” and “Country:” and “Suche:” then
select “Farmer/Producer” where “Location Country” = farmerCountry and contains(text(“Product category”), productCategory) and contains(lower(Products + “Product category”), mySuchtext)
else
if “Product category:” then
select “Farmer/Producer” where contains(text(“Product category”), productCategory)
else
if farmerCountry = null then
void
else
if “Suche:” then
let mySuchtext := lower(“Suche:”);
select “Farmer/Producer” where contains(lower(Products + “Product category”), mySuchtext)
else
select “Farmer/Producer”
end
end
end
end
9 Antworten
-
Hallo Kyriakos. So, wie ich das lese, benutzt Du nirgendwo die Variable farmerCountry als alleinigen Filter Du schreibst zwar, wenn farmerCountry leer, dann nichts (if farmerCountry = null then void), aber nicht if farmerCountry then... Vielleicht hilft es Dir. Kleiner Hinweis: Du deklarierst die Variable mySuchtext zweimal. Das dürfte nicht nötig sein. Mirko
-
Danke für die Hilfe Mirko.
Habe es jetzt so angepasst, allerdings funktioniert jetzt der Country Filter jedoch nicht die Suchfunktion.
let productCategory := text(“Product category:”);
let farmerCountry := text(“Country:”);
let mySuchtext := lower(“Search:”);
if “Product category:” and “Country:” and “Search:” then
select “Farmer/Producer” where “Location Country” = farmerCountry and contains(text(“Product category”), productCategory) and contains(lower(Products + “Product category”), mySuchtext)
else
if “Product category:” then
select “Farmer/Producer” where contains(text(“Product category”), productCategory)
else
if “Country:” then
select “Farmer/Producer” where contains(text(“Location Country”), farmerCountry)
else
if farmerCountry = null then
void
else
if “Search:” then
select “Farmer/Producer” where contains(lower(Products + “Product category”), mySuchtext)
else
select “Farmer/Producer”
end
end
end
end
end -
Jetzt heißt Deine Variable plötzlich mySuchtext:=lower(“Search:”) und nicht wie im ersten Beitrag lower(“Suche:”). Ist es nur ein Schreibfehler? Gute Nacht. Mirko
-
Nein habe diese einfach nur verändert.
-
Moin. Ich denke, dass der Ausdruck if farmerCountry = null then void die if-Abfragen beendet. Laß ihn, probehalber, einmal weg. Mirko
-
Leider erfolglos :(
-
Hallo Kyriakos,
Ich gehe mal davon aus, dass Product category: und Country: die Auswahlfelder sind und Search: ein Textfeld. Es ist mir nicht klar was für Feldtypen Location Country, Product category und Products in der Tabelle Farmer/Producer sind.
Wenn aber einzelne Filter an sich getestet wurden und funktionieren, würde ich folgendes vorschlagen:
---
let me:=this;
var myFilter:=select “Farmer/Producer”;
myFilter:=if me.“Country:” then myFilter[“Location Country”=me.text(“Country:”)] else myFilter end;
myFilter:=if me.“Product category:” then myFilter[contains(text(“Product category”), me.text(“Product category:”))] else myFilter end;
myFilter:=if me.“Search:” then myFilter[contains(lower(Products + “Product category”), me.lower(“Search:”))] else myFilter end;
myFilter
---
Leo
-
ok das funktioniert tatsächlich. Könntest du mir noch eine kleine erklärung der Syntax geben? Will das nähmlich verstehen um weitere Filter einzubauen. Vielen Lieben Dank!!!
-
//deklariere Variable me als Datensatz, wo ich mich gerade befinde. Dan kann man im späteren statt neue Variable einfach me...... schreiben//
let me:=this;//deklariere die Tabelle Farmer/Producer als Variable myFilter//
var myFilter:=select “Farmer/Producer”;//prüfe ob das Feld Country ausgefüllt ist und wenn Ja geben der Variable myFilter eine zusätzliche Bedingung in Eckklammern. Wenn Nein - bleibt myFilter unverändert.//
myFilter:=if me.“Country:” then myFilter[“Location Country”=me.text(“Country:”)] else myFilter end;//prüfe ob das Feld Produkct category ausgefüllt ist und wenn Ja geben der Variable myFilter eine zusätzliche Bedingung in Eckklammern. Wenn Nein - bleibt myFilter unverändert.//
myFilter:=if me.“Product category:” then myFilter[contains(text(“Product category”), me.text(“Product category:”))] else myFilter end;//prüfe ob das Feld Search ausgefüllt ist und wenn Ja geben der Variable myFilter eine zusätzliche Bedingung in Eckklammern. Wenn Nein - bleibt myFilter unverändert.//
myFilter:=if me.“Search:” then myFilter[contains(lower(Products + “Product category”), me.lower(“Search:”))] else myFilter end;//gebe myFilter als Antwort für die Ansichtstabelle zurück//
myFilterSo prüft Ninox jede Bedingung einzeln und verändert (bzw. nicht verändert) bei jeder Prüfung die Variable myFilter. Dabei nimmt er bei jeder Weiteren Prüfung bereits geänderte Variable. So kann man unendlich viele Bedingungen abprüfen, wenn diese nicht voneinander abhängig sind.
Leo
Content aside
- vor 4 JahrenZuletzt aktiv
- 9Antworten
- 657Ansichten