0

numbers(DMAF) mit Bug?

Hallo,
Titel deckend ist ein dynamisches Mehrfachauswahlfeld. Das Feld Formel fragt mit numbers('Titel deckend') die gewählten Nr der Titel ab.

In der Tabelle HH-Titel, auf die sich das DMAF bezieht, gibt es aber keine Einträge mit den Nr 1-9. 1-9 waren alte Einträge, die gelöscht wurden. Dort beginnt es mit 10. Nr 11 erscheint auch, gibt es in der Tabelle HH-Titel auch nicht mehr. Für das DMAF Titel deckend werden auch keine Einschränkungen hinsichtlich des select-Befehls gemacht.

Ist das  ein Bug? Oder wo liege ich falsch?
Merkt sich Ninox intern die bei einem Datensatz in der Tabelle mit diesem DMAF, wie die Optionen gesetzt waren. Wenn dann ein Eintrag in der Quelltabelle gelöscht wird, löscht sich aber nicht intern der Bezug zu den gelöschten Datensätzen?

Grüße Maurice

6 Antworten

null
    • mirko3
    • vor 3 Monaten
    • Gemeldet - anzeigen

    Hi Maurice. Das ist kein Bug (lt Uwe und m.E.). Inhalte von Datensätzen würden sich nachträglich ändern, wenn diese Items entfernt werden. Wie Du ja schon dachtest. Wenn das egal ist und Du es ändern willst, dann würde ich ein neues dmulti erstellen und per Button mit Schleife die Einträge des alten in das neue übertragen. 

      • Maurice
      • vor 3 Monaten
      • Gemeldet - anzeigen

       Danke (auch an Uwe). Ja, so macht das Sinn. Wobei es verwirrend ist. Hätte ich das gewusst, hätte ich vor dem löschen der Datensätze die entsprechenden Einträge genullt. Wo wir dabei sind: ich hänge an einer Sache. Der Screenshot ist aus der Tabelle Deckungsfähigkeitsgruppen (sperriger Name, ist aber eine versteckte Tabelle), die per Trigger die beiden DMAF befüllt.  In einer verknüpften Relation steht bei den Einschränkungen Folgendes:

      let myArray := [26][false];
      let deckTitel := a.'deckender Titel'.'HH-Titel'.number(Nr);
      let begTitel := a.'begünstigter Titel'.'HH-Titel'.number(Nr);
      let DF := unique((select 'Deckungsfähigkeitsgruppen')[contains(numbers('Titel begünstigt'), begTitel)].number('Titel deckend'));
      myArray := for i in DF do
              if number(i) != begTitel then
                  i
              end
          end;
      contains(myArray, a.'deckender Titel'.'HH-Titel'.number(Nr))
      

      myArray ist dabei ein number-array (nämlich das aus dem Formel Feld aus dem Screenshot ohne die gelöschten Nr und ohne die Identität). Ich dachte ich bekäme dann in der Auswahl der Verknüpfung nur alle HH-Titel angezeigt, die deckende Titel sind. Ist aber nicht so, da wird nichts angezeigt. Ich habe dann mal mit dem contains-Parametern gespielt.

      contains([25,3,26],26): alle HH-Titel werden angezeigt (klingt logisch da wahre Aussage)

      contains(myArray,26): leer, obwohl 26 in myArray vorkommt

      contains([25,3,26,40],a.'deckender Titel'.'HH-Titel'.number(Nr)): leer obwohl HH-Titel mit der id-Nr 26 ein deckender Titel ist, ebenso HH-Tile mit Nr 41.

      Irgendwo mache ich einen Denkfehler und komme nicht drauf. Einen Tipp?

      Grüße Maurice

    • mirko3
    • vor 3 Monaten
    • Gemeldet - anzeigen

    Hallo Maurice. Zeile 1 ist unnötig, Variable in Zeile 2 wird nicht benutzt. Ich weiß natürlich nicht, was du hier für Tabellen- und Feldbeziehungen hast, aber mal einen Versuch mache ich mal trocken.

    let ary :=  for i in select 'Deckungsfähigkeitsgruppe' do
    let begTitel  := i.'begünstigter Titel'.'HH-Titel'.number(Nr);
    if contains(numbers(i.’Titel begünstigt'), begTitel) and i.number(Nr) != begTitel then i.number(Nr)
    end
    end;
    contains(ary,  a.'deckender Titel'.'HH-Titel'.number(Nr))
    
    • Maurice
    • vor 3 Monaten
    • Gemeldet - anzeigen

    Hallo Mirko, Danke. Ja, die ersten 2 Zeilen waren aus vorherigen Versuchen.

    Aber: der contains-Befehl funktioniert in diesem Kontext nicht, also mit a.'deckender Titel'.'HH-Titel'.number(Nr). Die Variable myArray bei mir liefert einen Number-String (mit typeof getestet), der auch Zahlen beinhaltet.

    contains([10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38], a.'deckender Titel'.'HH-Titel'.number(Nr))
    

    bringt keinen HH-Titel zum Vorschein - und in dem Array sind genügend Nr, die was anzeigen sollten.

      • mirko3
      • vor 3 Monaten
      • Gemeldet - anzeigen

       Hallo Maurice. Da kann ich auch nicht weiter helfen, da ich die DB nicht kenne. Mirko

    • Maurice
    • vor 2 Monaten
    • Gemeldet - anzeigen

    Ohne DB-Struktur ist schwierig. Die Ausführungen in https://forum.ninox.de/t/g9h2qkd haben mir nochmal die Logik hinter "Einschränkungen" verdeutlicht und mein Fehler wurde mir klar. Ich habe es jetzt hinbekommen mit:

    let begTitel := a.'begünstigter Titel'.'HH-Titel'.number(Nr);
    let DF := unique((select 'Deckungsfähigkeitsgruppen')[contains(numbers('Titel begünstigt'), begTitel)].numbers('Titel deckend'));
    let myArray := for i in DF do
            if i != begTitel then i end
        end;
    contains(myArray, b.'HH-Titel'.number(Nr))
    

    Danke für die Unterstützung.

Content aside

  • vor 2 MonatenZuletzt aktiv
  • 6Antworten
  • 42Ansichten
  • 2 Folge bereits