0

select Abfrage für Ansicht

Hallo,

stehe auf dem Schlauch. Für eine Gestaltungselement Ansicht nutze ich folgende select-Abfrage

let thisKJ := Kursjahrgang.Jahrgang;
(select Personal)[count('Fächer'.'Fremdprüfungen UMS'.('Fremdprüfer UMS' and Kurs.Kursjahrgang.Jahrgang = thisKJ)) > 0]

Leider wird bei den DS in der Ansicht der hintere Teil der Bedingung "and Kurs.Kursjahrgang.Jahrgang = thisKJ" nicht ausgewertet. Woran kann das liegen?

thisKJ ist eine Zahl, die ich mit alert(thisKJ) geprüft habe.

Grüße Maurice

5Antworten Älteste zuerst
  • Älteste zuerst
  • Neuste zuerst
  • Aktive Threads
  • Beliebt
    • UweG
    • UweG
    • Vor 4 Tagen
    • Gemeldet - anzeigen

    Wahrscheinlich liegt es daran, dass die Abfrage keinen Sinn ergibt.
     

    Was willst du denn genau prüfen?
    Scheinbar befindest du dich in der Tabelle 'Kurs'.
    Wie ich das rauslese, hast du eine Tabelle Personal, in der eine Verknüpfung zur Tabelle 'Fächer' und eine weitere Verknüpfung zur Tabelle Kurs existiert.
    In der verknüpften Tabelle 'Fächer', existiert wiederum eine Verknüpfung zu einer Tabelle 'Fremdprüfungen UMS' mit dem Feld oder einer weiteren Verknüpfung, mit Namen 'Fremdprüfer UMS'.
    In der verknüpften Tabelle Kurs, existiert wiederum eine Verknüpfung zu einer Tabelle 'Kursjahrgang' mit dem Feld oder einer weiteren Verknüpfung, mit Namen 'Jahrgang'.

    Und dann blicke ich nicht mehr durch.
    Was genau soll denn mit Count gezählt werden?
     

    Gefällt mir
    • UweG
    • UweG
    • Vor 4 Tagen
    • Gemeldet - anzeigen

    Ich mache mal einen Schuss ins Blaue und gehe von folgender Annahme aus:
    Zeige mir alle Records der Tabelle 'Personal', bei der die Verknüpfung zu 'Fächer'.'Fremdprüfungen UMS'.'Fremdprüfer UMS' einen Wert hat  und bei denen zusätzlich das Feld 'Jahrgang' der Verknüpfung zu 'Kurs.Kursjahrgang' den Wert von 'thisKJ' hat.

    let thisKJ := Kursjahrgang.Jahrgang;
    (select Personal)[count('Fächer'.'Fremdprüfungen UMS'.'Fremdprüfer UMS' >0)][Kurs.Kursjahrgang.Jahrgang = thisKJ]

    Entschuldige den ersten Satz meines vorigen Post, aber da war ich wohl schon etwas übermüdet. 
     

    Gefällt mir
    • Maurice
    • Maurice
    • Vor 4 Tagen
    • Gemeldet - anzeigen

    Hallo Uwe,

    vorab: du brauchst dich für nichts zu entschuldigen (es sei denn jemand vergreift sich im Ton). Du versuchst zu helfen, bringst Zeit auf - dafür bin ich dankbar. Und dass solche Algorithmen manchmal erst auf den zweiten Blick verständlich erscheinen, ist ja normal.

    Nun zum Inhalt: ich wäre nie auf die Idee gekommen mit zwei eckigen Klammernpaaren zu arbeiten, also zwei separate Bedingungen zu setzen. Das war für mich der entscheidende Hinweis. Dein Code müsste, damit er von Ninox angenommen wird wie folgt lauten:

    let thisKJ := Kursjahrgang.Jahrgang;
    (select Personal)[count('Fächer'.'Fremdprüfungen UMS'.'Fremdprüfer UMS' >0)]['Fächer'.'Fremdprüfungen UMS'.Kurs.Kursjahrgang.Jahrgang = thisKJ]
    

    brachte aber nicht das gewünschte Ergebnis, das du richtig formuliert hast. Mit ist die Bedeutung zweier unmittelbar hintereinander auftretenden eckigen Klammern nicht. Ist das wie eine and-Verknüpfung?

    Wie es aussieht, taugt folgender Code. Es bedarf noch einer weiteren Testung der Datensätze und außerdem ist der hier gegebene Code-Schnipsel nur ein Teilcode, der das Hauptproblem meines Code-Ansatzes darstellen sollte.

    let thisKJ := Kursjahrgang.Jahrgang;
    (select Personal)[count('Fächer'.'Fremdprüfungen UMS'[Kurs.Kursjahrgang.Jahrgang = thisKJ].'Fremdprüfer UMS') > 0]
    

    Vielen Dank Uwe

    Gefällt mir
    • Maurice
    • Maurice
    • Vor 4 Tagen
    • Gemeldet - anzeigen

    Sollte heißen "Mir ist die Bedeutung zweier unmittelbar hintereinander auftretenden eckigen Klammern nicht klar."

    Gefällt mir
    • UweG
    • UweG
    • Vor 3 Tagen
    • Gemeldet - anzeigen

    Wie du richtig vermutest, kann man die Schreibweise:

    select TABELLE where Bedingung1 and Bedingung2

    auch wie folgt schreiben:

    select TABELLE [Bedingung1] [Bedingung2]

    Mit der ersten Bedingung wird schon die Anzahl der Datensätze der Tabelle eingeschränkt.

    Auf diese zutreffende Menge wird dann die nächste Bedingung angewendet und die Datenmenge weiter eingeschränkt, so das als Ergebnis nur noch die Datensätze vorhanden sind, die alle Bedingungen erfüllen.

    Ich kenne dein Datenmodell nicht und weiß nicht, wie genau die Tabellen untereinander verknüpft sind.
     

    Auch aus deinem letzten Ansatz werde ich nicht schlau, wie alles zusammenhängt.

    Wenn das Beispiel von mir dich auf den richtigen Weg gebracht hat ist es Gut.

    Gefällt mir
Gefällt mir Folgen
  • Status Answered
  • Vor 3 TagenZuletzt aktiv
  • 5Antworten
  • 39Ansichten
  • 2 Folge bereits