0

DynMFA - Eintrag per Skript hinzufügen

Hi liebes Forum,

ich würde gerne einem bestehenden DynMFA einen Eintrag hinzufügen per Skript. 
Die Schwierigkeit besteht darin, dass ich den bereits bestehenden Array nicht überschreiben möchte.

Ich habe ein DynMFA mit den Feldern Mitarbeiter (Mitarbeiter 1,2,3,4). Dieses Feld hat bereits durch einen anderen Zuweiser einen Eintrag (zB, Mitarbeiter 1 & 2 aktiv). Nun würde ich gerne per Skript zB den Eintrag (Mitarbeiter 3) hinzufügen, so dass das Ergebnis ist: Mitarbeiter 1,2 & 3 aktiv.

Aktuell führt meine Formel leider zum Überschreiben vom ursprünglichen Eintrag und liefert das Ergebnis (Mitarbeiter 3 aktiv). Ich möchte jedoch hinzufügen.

Wir schreibt man das in einem Skript?

Ich freue mich sehr über einen Rat!

Herzlichen Gruß

Manuel

6 Antworten

null
    • Ninox-Professional
    • planoxpro
    • vor 6 Monaten
    • Gemeldet - anzeigen

    Hallo Manuel, um einem DMAF einen Eintrag hinzuzufügen, muss man dessen DatensatzNr kennen. In folgendem Beispiel wird die Nummer in der ersten Zeile anhand der PersonalNr aus der Tabelle 'Mitarbeiter' ermittelt. Dann muss nur noch das bestehende Auswahl-Array um die Nummer erweitert werden:

    let myRecord := first(select Mitarbeiter where PersonalNr = "P123");
    if not chosen(DMFAFeld, number(myRecord)) then
        let myArray := numbers(DMFAFeld);
        let myNewArray := array(myArray, [number(myRecord)]);
        DMFAFeld := myNewArray
    end
    • Manuel_Drews
    • vor 6 Monaten
    • Gemeldet - anzeigen

    Hallo! Danke für Deine schnelle Antwort.

    Hm, ich befürchte, dass ich mein Problem nicht gut genug geschildert habe. Entschuldige, ich glaube, dass das Wort "hinzufügen" in meinem ursprünglichen Thread missverständlich formuliert war.

    Meine Frage ging eher in die Richtung wie ich zum Beispiel in der folgenden DMAF eine weitere Auswahl aktivieren kann... folgend der Ausgangszustand:

    In diesem Beispiel hat ein User selbst die folgenden Schaltflächen angewählt:

    Danach würde ich gerne per Skript "Karl Heinz" zusätzlich aktivieren, dies geschieht über einen Button in einer anderen Tabelle. Wichtig wäre, dass Max Muster und Maxine Musterfrau wie zuvor aktiviert bleiben. 

    In meiner aktuellen Programmierung mittels := Zuweisung passiert leider das. Max Muster und Maxine Musterfrau werden "gelöscht" bzw. deaktiviert.

    Wie würdest Du das per Skript realisieren?

    Und nochmal, danke danke danke für Deine tollen Ratschläge und Dein Wissen!

      • Ninox-Professional
      • planoxpro
      • vor 6 Monaten
      • Gemeldet - anzeigen

       

      Hallo Manuel, ich hatte schon deine erste Beschreibung so verstanden (aus 1,2 wird 1, 2, 3), und mein Script sollte genau das tun: Einen weiteren(!) Eintrag als ausgewählt markieren.

      Dynamische Auswahlfelder arbeiten mit den Datensatznummern der Einträge in der entsprechenden Quell-Tabelle, unabhängig davon, welche Texte in der Auswahlliste angezeigt werden. Wenn du der Auswahl also "Karl Heinz" hinzufügen willst, brauchst du dessen Datensatznummer als Zahl. In meinem Codevorschlag oben ermittle ich diese beispielhaft anhand der PersonalNr. Es könnte aber genauso gut der Name sein:

      let myRecord := first(select Mitarbeiter where Name = "Karl Heinz");

      Rückgabewert ist die ID des Datensatzes, aus der ich dann mit number() die Nummer als Zahl ziehe, um diese dem Array mit den ausgewählten Einträgen hinzufügen zu können.

      Wie du die Datensatznummer in deinem Fall ermittelst, kann ich leider nicht sagen, da ich weder das Szenario noch das Datenmodell kenne, Wenn du die Änderung aus einer anderen Tabelle heraus vornehmen willst, müsstest du außer der Datensatznummer des Eintrags auch noch die ID de Datensatzes kennen/ermitteln, in dem die Änderung durchgeführt werden soll.

      Man müsste also noch wissen, mit welcher Aktion in welcher Tabelle du die Änderung auslösen willst. Und in welchem Datensatz welcher Tabelle die Änderung vorgenommen werden soll.
       

      • Manuel_Drews
      • vor 6 Monaten
      • Gemeldet - anzeigen

       

      Ich hoffe es ist ok, wenn ich an meine ursprüngliche Frage nochmal eine Zusatzfrage anhänge?

      Wie würde ich denn die gewählten Werte auslesen, um Sie für eine Abfrage zu nutzen?

      Der Hintergrund ist:

      Ich würde gerne Datenansichten (Statistiken) mit dem oben genannten Switch anzeigen in Abhängigkeit von den gewählten Mitarbeitern. 

      Es würde also nicht um das Hinzufügen gehen, sondern um die Abfrage der gewählten Werte, die ich in einem anderen Skript nutze, um die Ansichten der Statistik zu verändern.

      By the way... ich finde das Erlernen des Skripts für DynMFA als Anfänger bisher am anspruchsvollsten 😲

      • Ninox-Professional
      • planoxpro
      • vor 6 Monaten
      • Gemeldet - anzeigen

       Mehrfachauswahlfelder geben immer Arrays zurück, bei dynamischen enthalten diese Arrays eben die Datensatznummern der gewählten Einträge.

      Alle ausgewählten Einträge bekommt man bspw. mit

      let myArray := numbers(DMFA)

      Ale Ergebnis enthielte die Variable myArray ein eben solches mit den Nummern der ausgewählten Einträge, z. B. [8, 14, 23].

      Will man prüfen, ob einzelne Einträge ausgewählt wurden, kann man das mit chosen() tun. Wobei ich empfehle, immer auf die Datensatznummer abzufragen (im Beispiel 23)

      if chosen(DMFA, 23) then ...

      Die Nummer kann natürlich auch aus einer Variable kommen.

    • Manuel_Drews
    • vor 6 Monaten
    • Gemeldet - anzeigen

    Lieber planox,

    ich bin es heute noch einmal mit frischen Kopf durchgegangen und konnte Dein Beispielskript auf mein Datenmodell anpassen. Es funktioniert!!!

    Herzlichen Dank, wie immer :-) Du bist wirklich eine großartige Unterstützung hier im Forum!

Content aside

  • Status Answered
  • vor 6 MonatenZuletzt aktiv
  • 6Antworten
  • 44Ansichten
  • 2 Folge bereits