1

Dynamische Auswahlfelder in Skripten nutzen

Ich habe in einer Projektdatenbank eine zweite Tabelle mit Aufgaben, die einem Projekt zugewiesen sind. Ein Projekt kann also mehrere Aufgaben haben, was ich leicht mit einer verknüpften Tabelle realisieren konnte. Derzeit ist es aber recht umständlich die Aufgaben abzuhaken, weil die Tabellenansicht der Verknpüfung offenbar keine Checkbox für Ja/Nein-Felder kennt. Ich muss also die Aufgabe per Klick im Popup öffnen und dort ankreuzen. Bei vielen Aufgaben recht zeitaufwendig.

Nun dachte ich mir, dass ich mir mit Ninox 3.3.0 ein dynamisches Mehrfachauswahlfeld aus der Aufgaben-Datenbank bestücken kann. Die Darstellung klappt ziemlich easy, so wie im Blog beschrieben. Nun möchte ich auf das Ankreuzen reagieren und entsprechend die Datensätz der Aufgaben auf erledegt/unerledigt setzen. Doch wie greife ich auf die dynamischen Inhalte einer Mehrfachauswahl zu? text(Feld), string(Feld) oder number(Feld) liefern immer sehr seltsame Zahlen und chosen(Feld) funktioniert hier gar nicht.

Im Prinzip würde ich in dem Skript jetzt jeden einzelnen Datensatz durchgehen und prüfen, ob die zugehörige Checkbox gesetzt wurde. Doch wie erfahre ich etwa den Status von Checkbox 1 oder Checkbox 7 des dynamischen Felds?

Cooler wäre es ja, wenn man die Checkbox direkt mit einem Ja/Nein-Feld verknpüfen könnte. Das geht aber nicht, oder?

32 Antworten

null
    • Stephan_Haumann
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Hallo Zusammen,

    das sieht ziemlich genail aus, jedoch komme ich mit dem Übertrag auf meine Felder überhaupt nicht klar.

    Ich habe in einem Dasboard ein dynAuswahl und ein DMulti. Zuerst wird in dem dynAuswahl (Choice_Kurs) der Kurs gewählt, dann werden im DMulti (Choice_Anwesenheit) die Teilnehmer angezeigt.

    Folgender Script soll in meinem DMulti (Choice_Anwesenheit) nun meine Anwesenden in einem Ja/Nein-Feld abharken (Trigger nach Änderung im DMulti):

    let me := this;
    let myChoice := "#" + replace(concat(numbers(Choice_Anwesenheit)), ", ", "#") + "#";
    let myKurs := (select Anwesenheit where Kurse.Nr = number(me.Choice_Kurs));
    for i in myKurs do
    if contains(myChoice, "#" + i.Nr + "#") then
    i.(Anwesend := true)
    else
    i.(Anwesend := false)
    end
    end;

    Wie bekomme ich es jetzt hin, dass bei der Auswahl eines neuen Kurses die bereits abgeharkten Anwesenheiten auch in dem DMulti angezeigt werden.

    Ich dachte eben schon ich sei mit dem Code von Tekl auf der richtigen Spur - aber nein! ;)

    Liebe Grüße und vielen Dank

    • Stephan_Haumann
    • vor 2 Jahren
    • Gemeldet - anzeigen

    sorry, zu früh gefragt. Ich habe die Beispieldatenbank gefunden. Wow...! Und danke!

    • Tekl
    • vor 2 Jahren
    • Gemeldet - anzeigen

    @Leonid: Ich verstehe das Problem nicht ganz. Kannst du das mit meiner Beispiel-Datenbank nachstellen (Dropbox-Link auf Seite 2). Ich habe da problemlos ein Projekt mir nur einer Aufgabe anlegen können.

    • work
    • vor 1 Jahr
    • Gemeldet - anzeigen

    Hallo zusammen! - du lieber Himmel! - Ich trau mich gar nicht, hier eine Frage zu stellen. Wahnsinn! - Ich habe mir die Datenbank (Projekte mit Aufgaben) auch mal runtergeladen (herzlichen Dank dafür! und Hut ab!). Ich bin nur ambitionierter Laie. Bei der Programmierung steige ich auch aus. - Dennoch eine Frage (ich hätte viele...): wenn ich in der Projekt-DB bereits bestehende Aufgaben auch in anderen Projekten übernehmen möchte (bestehenden Datensatz übernehmen), sehe ich genau keine Aufgabe. In der Aufgabentabelle sind alle zu sehen. - Hintergrund: Ich habe eine Tabelle mit Stammdaten von Personen. In dieser Tabelle gibt es Menschen mit bestimmten Funktionen im Büro. Nun möchte ich Protokolle schreiben und die Anwesenheit der vorausgewählten Personengruppe einerseits in einer Tabelle "Protokoll" als "anwesend" mit einer Checkbox markieren, andererseits in einer Untertabelle "TOP" ebenfalls aus derselben Stammdatentabelle die gewünschten vorausgewählten Personen als "beim Tagesordnungspunkt anwesend" markieren. - Bislang habe ich das mit einer Rückverknüpfung und Darstellung als Checkbox versucht. Das sah auch gut aus, bis wir bemerkt haben, dass beim 2. "TOP" die Auswahl zwar auch funktionierte, aber dann im ersten TOP wieder alle Checkboxen leer waren. Das fanden wir natürlich nicht gut. Nun habe ich endlich die dynamischen Auswahlfelder (wieder) entdeckt. .. OK das schien einfach. Aber dann doch nicht für mich. Teki! Meine Herren! - Das bekomme ich nicht hin. Ich kann gerne mal eine leere DB dazu hochladen. Ich benötige im Grunde das gleiche wie die Kollegin, die eine Anwesenheitsliste braucht. Nur, dass ich die für eine komplette Agenda brauche. -Viel Text, aber vielleicht konnte ich das Problem damit ausreichend beschreiben. :-)

      • mirko3
      • vor 1 Jahr
      • Gemeldet - anzeigen

      work Bin noch davon entfernt, genau zu wissen, was Du tun willst. Klingt aber nicht unmöglich. Hier mal ein kleines Beispiel. Wenn es nicht reicht, dann lade doch Deine DB hier hoch oder schicke sie an mich. Mirko

    • UweG
    • vor 1 Jahr
    • Gemeldet - anzeigen

    work  Einen Teil deiner Frage kann ich beantworten.
    Weshalb du keine bereits bestehenden Aufgaben bei einer Neuanlage sehen kannst, liegt am Aufbau von Tekl's DB. Es handelt sich bei der Beziehung von Projekten und Aufgaben um eine 1:n Verknüpfung. Ein Projekt kann unzählige Aufgaben haben, aber eine Aufgabe kann nur genau einem Projekt zugeordnet werden. Deshalb muss für jedes Projekt eine neue Aufgabe angelegt werden. Ansonsten müsste man eine n:m Beziehung erstellen, um deine Anforderung zu erfüllen. Ich denke aber, dass damit die Funktionalität von Tekl's DB nicht mehr gegeben ist. Das dyn.Mehrfachauswahlfeld in Projekte zeigt zum einen alle dem Projekt zugeordneten Aufgaben an, dient aber gleichzeitig als Schalter um diese Aufgabe als erledigt oder unerledigt zu markieren. Das funktioniert dann nur über die 1:n Beziehung. Das besondere an der DB ist aber die 2-Wege Möglichkeit. Man kann wie gesagt über das dyn.MAF die Aufgabe als erledigt markieren, aber dies auch in der Aufgabe selbst vornehmen und aktualisiert damit automatisch auch das dyn.MAF. 

    Man könnte vielleicht einen Aufgabenpool erstellen, in denen Aufgaben zentral abgelegt sind und diese dann nach Auswahl, der eigentlichen Tabelle Aufgaben zugeordnet  und mit Projekte verknüpft werden. Aber am grundsätzlichen DB-Aufbau von Tekl's DB kannst du nichts ändern, wenn du die Funktionalität des dyn.MAF beibehalten willst.

    Eine Anmerkung noch, Tekl nutzt die Ninox-App, bei der einige Ninox-Funktionen per Trigger funktionieren, die in der Public-Cloud nicht funktionieren. Es könnte deshalb in der Cloud anders funktionieren.

    Ansonsten, wie Mirko bereits schrieb.
    Eine Dummy-DB hilft die Gedankengänge des Fragenden besser zu verstehen und zu sehen, was die eigentliche Anforderung ist.
     

    Auch viel Text von mir😉

    • work
    • vor 1 Jahr
    • Gemeldet - anzeigen

    Ahoi Uwe und auch Dank an die anderen :-)

    Ich muss "mal eben" eine etwas komplexere Datenbank ohne Daten wegspeichern. Dann könnte ich wahrscheinlich hochladen. -Wohin? (Sorry, bin nicht so flott bei den Antworten). Hier als Anhang? Sehe gerade die Büroklammer. ...

    Gruß

    Peter

Content aside

  • 1 „Gefällt mir“ Klicks
  • vor 1 JahrZuletzt aktiv
  • 32Antworten
  • 4106Ansichten
  • 6 Folge bereits