Abfrage von Auswahltabellen
Wenn ich in einer Tabelle in einer Spalte die Werte einer Auswahltabelle eintrage, so kann ich diese nur nach dem Text, nicht aber nach der laufenden Nummer, die daneben steht, abfragen. Beispiel:
Ich lege eine Auwahlliste mit OBST an, habe darin ...
1 Äpfel
2 Birnen
3 Kirschen
und möchte nach allen Datensätzen sucheb, die Birnen enthalten, dann funktioniert es so:
cnt(select MEINETABELLE where contains(text('OBST'), "Birnen"))
... es funktioniert aber leider nicht die für mein Empfinden elegantere Abfrage ...
cnt(select MEINETABELLE where Obst = 2)
Bedeutet dass, dass man auf die Indexnummer, die ja angezeigt wird, nicht zugreifen kann?
11 Antworten
-
Hallo Josef,
so wie du es beschreibst, sind es sicherlich keine Auswahlfelder sondern Mehrfachauswahlfelder.
für diese gelten folgende Regeln:
cnt(select MEINETABELLE where chosen('OBST', "Birnen"))
oder auch mit Nummer
cnt(select MEINETABELLE where chosen('OBST', 2))
Leo
-
Hallo Leo,
vielen Dank! Aber leider funktioniert das bei mir nicht.
Bei allen Werten, die ich mit der Zahl (1, 2, 3, ...) abfrage (um im Beispiel zu bleiben Äpfel, Birnen, Kirschen), bekomme ich immer ein und dieselbe Summe, die merkwürdigerweise nichts mit der Anzahl der tatsächlich vorhandenen Datensätze zu tun hat.
Josef -
Hallo Josef,
IMHO solltest Du mit
cnt(select MEINETABELLE where contains(chosen(Obst), "Birnen"))
oder
cnt(select MEINETABELLE where contains(numbers(Obst), 2))
zum Ziel kommen. Aber Vorsicht, die Variante contains(numbers(Mehrfachauswahlfeld), Index) wird nur so lange funktionieren, wie das Mehrfachauswahlfeld lediglich bis neun Optionen bietet.
lg, Torsten
-
Kannst du bitte einen screenshot von datenmodel machen damit es eindeutig ist ob es Auswahl- oder mehrfachauswal ist?
-
Danke, mit ...
cnt(select MEINETABELLE where contains(numbers(Obst), 2))
hat es funktioniert.
Die Option contains(numbers ... kannte ich noch nicht -
Fein - wie gesagt, bei mehr als 9 Optionen im Mehrfachauswahlfeld wird Dir die Funktion auf die Füße fallen - schließlich ist in 12 z.B. auch die 2 enthalten...
-
Ja, danke für den Hinweis. Ich habe den Eindruck, dass es nicht möglich ist tatsächlich auf den Index der Mehrfachauswahl zuzugreifen.
-
Nochmal:
ein Befehl: chosen(Obst,2) gibt ein "Ja" zurück wenn die Nummer 2 ausgewählt ist. Funktioniert übrigens auch bei 12. Dementsprechend
cnt(select MEINETABELLE where chosen(Obst, 2))
Leo
-
Moin.
Bei einem Mehrfachauswahlfeld erhält man mit der Funktion numbers() {nicht number() ohne 's'} ein numerisches Array mit den gewählten Objekten. Diese kann man dann mit item() extrahieren und so weiterverarbeiten.
In der Referenzdatenbank im Webinar-Team sind die Funktionen erklärt.
Gruss
Uwe -
Hallo allerseits, die Möglichkeit der direkten Abfrage mit chosen(MFAF, "Text") wurde zur Überraschung der Teilnehmer (u. a. Leo) mal von Jörg bei einem Webinar ins Spiel gebracht. Es wurden dann gleich noch einige andere Varianten probiert, z. B. auch die numerische per chosen(MFAF, ZAHL). Letztere hat damals aber nicht fuktioniert, wenn ich mich recht erinnere.
Vielleicht haben die Entwickler zwischenzeitlich daran geschraubt. Jedenfalls scheint es jetzt auch mit der numerschen ID zu funktionieren. So, wie Leo es schreibt. Am besten, einfach mal ausprobieren.
Den Referenz-Eintrag zu chosen() hatte ich übrigens damals noch am selben Tag aktualisiert. Gerade habe ich ihn noch mal angepasst.
-
Wow, auf dem Stand "funktioniert noch nicht" war ich auch noch, deshalb mache ich bisher einen großen Bogen darum.
Danke für die Rückmeldung und Klarstellung!
Content aside
- vor 4 JahrenZuletzt aktiv
- 11Antworten
- 1044Ansichten