0

Dynamisches Auswahlfeld zeigt ab bestimmtem Datensatz um 1 verschobene Werte an

Ich habe zwei einfache dynamische Auswahlfelder. Je nach erster Auswahl (Fachgruppe) wird die zweite Auswahl (Fachgebiet) eingeschränkt mit diesem Code unter "Dynamic Values":

let VA := Fachgruppe_dynA;

if VA then

             select Fachgebiete where Fachgruppe = VA

else

              select Fachgebiete

end

 

Das klappt wunderbar für die ersten 8 Fachgruppen der verknüpften Tabelle "Fachgruppen". Danach gibt es einen Gap und die zweite Auswahl zeigt mir immer um eine Fachgruppe versetzt die Fachgebiete zur Auswahl an,  also die Fachgebiete zu Fachgruppe 10, wo sie mir die zu Fachgruppe 11 anzeigen sollte usw. bis zum Ende (24 Fachgruppen).

In den verknüpften Tabellen ist alles, wie es sein soll. Ich tappe im Dunkeln. Hat jemand einen Tipp, wo ich ansetzen kann? Danke im Voraus!

Screenshot_5

9 Antworten

null
    • UweG
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Hallo Anne 

    Ich habe das mal mit 2 Dynamischen Auswahlfeldern und 2 Tabellen nachgebaut und gehe davon aus, dass du in Fachgebiete dynA eine Verknüpfung zu Fachgruppe_dynA hast. Ich habe die erste Tabelle mit 12 Datensätze gefüllt und mindesten 12 Datensätze in der zweiten Tabelle mit jeweils einer Verknüpfung zu einem Datensatz der ersten Tabelle. Ich habe es in der Cloud und App ausprobiert und es funktioniert einwandfrei. Der Gap ist bei mir nicht aufgetreten. Es funktioniert so wie es soll. So ist es wohl schwer herauszufinden warum es bei dir zu diesem Phänomen kommt. Vielleicht ist irgendeine Einstellung in deinen dynamischen Auswahlfeldern verantwortlich dafür. Aber mit der gegebenen Information ist es nur raten. Vielleicht versuchst du mal in einer neuen NinoxDB nur mit einer Formular Tabelle und 2 Dynamischen Tabellen das Szenario nochmal nachzustellen um zu sehen ob es auch dort zu dem Gap kommt.

    • Anne.2
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Hallo Uwe, vielen lieben Dank für deine Rückmeldung und deinen Versuch, das nachzubauen. Ich bin in der Cloud und die Verknüpfungen sind so, wie du vermutest. Die Einstellungen der Auswahlfelder sind wie im Bild, also eigentlich nichts Besonderes. Ich werde es versuchen, wie du vorschlägst. Hätte ja sein können, dass die Lösung direkt auf der Hand liegt und nur ich als Newbie auf dem Schlauch stehe. Danke jedenfalls für deine schnelle erste Hilfe.
    Screenshot_6

     
    • UweG
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Hallo Anne
    versuch mal folgendes:
    Ersetze let VA := Fachgruppe_dynA; mit: let VA := record(Fachgruppen,number(Fachgruppe_dynA));
    Vielleicht hilft es ja.

    Es sieht ja laut deiner Fehlerbeschreibung so aus, daß die TabellenID von Fachgruppe durcheinander kommt.

    • UweG
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Was noch sein könnte:
    Die Verknüpfungen in  der Tabelle Fachgebiete stimmen nicht. Solltest du auch mal überprüfen.

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

    Ich kann das Problem auch nicht nachvollziehen. Man könnte aber - nur, um es versucht zu haben - auch mal direkt die numerische Record-ID auslesen:

     

    let myFG := number(raw(Fachgruppe_dynA));
    if myFG then
       select Fachgebiete where number(Fachgruppen) = myFG
    else
       select Fachgebiete
    end

    • Anne.2
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Hallo Uwe, hallo Copytexter, vielen Dank! Ich habe beide Codes ausprobiert. Uwes Code bringt keine Veränderung, der von Copytexter war's, fantastisch! Herzlichsten Dank an euch beide! Verstehen tu ich's nicht. Was ist denn die numerische Record-ID? Die Ninox-Nummer?

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

    So GANZ blicke ich offen gestanden auch nicht durch, was genau wann in welchem Format zurückgegeben wird. Die komplette ID ist eigentlich ein String, bestehend aus der Kennung der Tabelle und der Nummer des Datensatzes (= Record), z. B. "B/12". Das interne Feld 'Nr' repräsentiert die "12", in der Cloud ebenfalls als String, was häufig Probleme bei der Sortierung verursacht. Wenn also irgendwelche Merkwürdigkeiten auftreten, versuche ich in der Regel als erstes, die Rückgabe- und Vergleichswerte mit number() einheitlich in Zahlen umzuwandeln. Denn mit dem Namen der Tabelle und der numerischen Datensatz-/Record-Nummer (im Beispiel die 12) kommt man eigentlich immer ans Ziel.

     

    Deshalb war das auch hier mein erster Gedanke. Aber mit Wissen im engeren Sinne hat das weniger zu tun. Ich würde es eher empirisches Bauchgefühl nennen.😉

    • UweG
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Schönes Bauchgefühl. Bei mir murmelt es auch ab und an.;-) Hatte hier auch an dein Script aus Slack gedacht aber das raw() vergessen.

    • Anne.2
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Noch mal danke für eure Hilfe und die gute Erklärung!

Content aside

  • vor 3 JahrenZuletzt aktiv
  • 9Antworten
  • 797Ansichten