0

In einer Tabelle Einträge aus einer MfA suchen

Ich habe eine Tabelle mit einem MfA-Feld "TAGS". 
In einer Auswertung möchte ich nun alle Datensätze selektieren die in einer Combobox selektiert werden. 
Es sollen mir alle Datensätze angezeigt werden, die mindestens einem Feld der Combobox entsprechen.

Die Eingabe:
   let id := (Tag_Select);
   select Transaktionen where Tags = id

liefert mir leider nur die Datensätze, die alle drei Werte der Combobox erfüllen, also praktisch eine "UND-Verknüpfung" - und ich hätte gerne eine "ODER-Verknüpfung". 
 

9 Antworten

null
    • mirko3
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Hallo Hermann. Schau mal, ob Dir das Script eines Users (ich denke es war Leo) etwas nützt.  Mirko

    let me := this;
    if me.Tag_Select then
        (select Transaktionen)[TAGS and cnt(unique(chosen(me.Tag_Select), chosen(TAGS))) < cnt(chosen(TAGS)) + cnt(chosen(me.Tag_Select))]
    else
        (select Transaktionen)[not TAGS]
    end
    
      • Verwaltungsrat ATC Active Trust Connect A
      • Hermann_Roters
      • vor 2 Jahren
      • Gemeldet - anzeigen

      Mirko Vielen Dank - bin derzeit leider nicht am PC. Werde das aber asap ausprobieren.
      Auf die Funktionen innerhalb der "Haupt-Select-Zeile" wäre ich wahrscheinlich nie gekommen ... :-)

      • Verwaltungsrat ATC Active Trust Connect A
      • Hermann_Roters
      • vor 2 Jahren
      • Gemeldet - anzeigen

      Mirko Habe gerade mal getestet.
      Mit chosen erhalte ich eine Fehlermeldung

      • Verwaltungsrat ATC Active Trust Connect A
      • Hermann_Roters
      • vor 2 Jahren
      • Gemeldet - anzeigen

      Mirko Die Idee von planox ist zwar etwas länger, funktioniert aber gut.
      Warum chosen nicht funktioniert, ist aber schon merkwürdig. 
      Wenn ich chosen in der kurzen Version, wie in der Funktionsbeschreibung angegeben, benutze, erhalte ich auch die gleiche Fehlermeldung.

      • mirko3
      • vor 2 Jahren
      • Gemeldet - anzeigen

      Hermann Roters Es liegt daran, dass "Tag_Select" ein dynamisches Mehrfachauswahlfeld und kein einfaches MFAF ist, wie ich dachte.  Aber eine Lösung reicht ja ;-)

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

      Mirko Ja, wenn da nichts anderes steht, gehe ich auch immer erst mal von einem "normalen" Mehrfachauswahlfeld aus. Die numbers()-Variante funktioniert allerdings mit beiden Typen (sofern sie auch in beiden Tabellen übereinstimmen). Von daher war's in diesem speziellen Fall egal.
       

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

    Oder man bastelt sich auf die Schnelle was mit eval():

    if Tag_Select then
        let myView := "";
        let myT := numbers(Tag_Select);
        for i in myT do
            myView := myView + "chosen(Tags, " + i + ") or "
        end;
        myView := substr(myView, 0, length(myView) - 3);
        select Transaktionen where eval(myView, this)
    else
        select Transaktionen
    end


     

      • Verwaltungsrat ATC Active Trust Connect A
      • Hermann_Roters
      • vor 2 Jahren
      • Gemeldet - anzeigen

      planox. pro Hallo planox - wow - ich bin begeistert - es funktioniert auf Anhieb.
      Vielen herzlichen Dank, damit komme ich einen grossen Schritt weiter.

    • Verwaltungsrat ATC Active Trust Connect A
    • Hermann_Roters
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Nochmal vielen Dank an planox und Mirko.
    Es ist toll, wenn auch nicht immer auf Anhieb verständlich,  was man mit so ein paar Codezeilen anstellen kann.