0

Schleife wird nicht in Tabellenansicht gezeigt, Hilfe!

Liebe Forumsmitglieder,

derzeit programmiere ich eine Auswertung für Themen die Klienten in eine psychologische Beratungsstelle mitbringen.

Bitte nicht wegen der Themen in den Screenshots erschrecken, leider haben wir auch mit solchen schweren Themen in unserer Beratungsstelle zu tun 😢 Auch das muss leider statistisch erfasst werden. Alle hier gezeigten Daten sind Dummy-Daten.

Zum Problem...

ich habe eine Formel namens "Durchgeschleift" programmiert, die die Markierungen in einem dynamischen Mehrfachauswahlfeld in einer anderen Tabelle (-> Klient) zählt.

Für jeden Klient wird in einem dynamischen MFA ausgewählt, welche Themen er mit in die Beratung bringt (siehe folgenden Screenshot).

So sieht das in der Tabelle Klienten dann aus:

 Das oben gezeigte dyn. Mehrfachfeld bezieht seine Werte aus einer anderen Tabelle (-> Themen) :

 In dieser Tabelle (Themen) habe ich nun die folgende Formel namens  "Durchgeschleift" angelegt:

let maxi := count((select Themen).Thema);
for i from 0 to maxi do
    if Thema = record(Themen,i).Thema then
        count(select Klient where Projekttyp = 1 and chosen(Gewalt, i))
    end
end

Die aktuelle Logik:

  1. Die Themen-Tabelle hat eine Spalte Thema (Thema 1, Thema 2 usw.) mit aktuell 6 Datensätzen (siehe Screenshot weiter unten).
  2. Ich zähle diese Gesamtzahl (6) mit Count und speichere sie in in der Variable maxi.
  3. Dann schleife ich das ganze durch, um die Datensätze durchzugehen und so Stück für Stück die Anzahl der markierten Felder zum jeweiligen Thema zu erhalten.

Was erstmal super klappt:

Ich bekomme für jeden Datensatz in Thema die richtige Zählung in Bezug zum dyn. Mehrfachfeld der Tabelle Klienten angezeigt.

  • Aber: Ich bekomme es, egal was ich mache, nicht hin, dass mir diese Berechnung in der Spaltenansicht meiner Themen-Tabelle als zusätzliche Spalte neben meinen Themen angezeigt wird.

 

(Meine Vermutung:

Die Zählung in der Schleife passt nicht zur Anzahl der Datensätze im Thema-Bereich der Themen-Tabelle? Könnte das der Grund sein, warum Ninox mir partout diese Formel nicht in der Tabelle anzeigen lassen möchte???)

Was kann ich jetzt tun, um meine - korrekt funktionierende Formel - in der Tabellenansicht anzeigen zu lassen? Habe jetzt Stunden gebraucht um das Ganze aufzusetzen und scheitere im letzten Schritt *haareRauf*

Ich bin sehr, sehr dankbar für jede Hilfestellung von euch!!! 

Herzlichen Dank & viele Grüße

Manuel

6 Antworten

null
    • Manuel_Drews
    • vor 6 Monaten
    • Gemeldet - anzeigen

    Ich hänge einmal meine aktuelle Datenbank (noch im Entwurf) an diesen Thread.

    Vielleicht kann einer von euch mal reinschauen? Alles nur Dummy-Daten.

    Es ist sehr merkwürdig. Manchmal klappt es die "Durchgeschleift"-Formel aus der Themen-Tabelle in der Tabellenansicht einzublenden. Wenn ich dann die Tabs wechsele oder zwischenzeitlich in den Bearbeitungsbereich-Modus über das Wrench-Tool gehe, verschwindet die Spalte dann wieder 🤪 Ist das vielleicht ein Bug?

    Schwer zu verstehen...

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

       

      Hallo Manuel, ich verstehe die Schleife in deiner Formel nicht. Wenn du für jeden Datensatz in der Tabelle 'Themen' ermitteln willst, wie oft dieser Punkt im DynMAF 'Gewalt' ausgewählt wurde, dann genügt die einfache Formel

      let myNr := number(this);
      cnt(select Klient where chosen(Gewalt, myNr))

      Und das betreffende Formelfeld lässt sich auch problemlos in der Tabellenansicht einblenden.

      Bei der Berechnung des prozentualen Anteils des jeweiligen Themas an allen ausgewählten Punkten könnte man dann auf obiges Formelfeld ('Häufigkeit') Bezug nehmen:

      let myZ := 0;
      for i in select Klient do
          myZ := myZ + cnt(numbers(i.Gewalt))
      end;
      round(100 / myZ * 'Häufigkeit')
    • Manuel_Drews
    • vor 6 Monaten
    • Gemeldet - anzeigen

    Lieber planox,

    vielen Dank für Deine schnelle Unterstützung!

    Wie würdest Du denn die Ermittlung des DynMAF 'Gewalt" ermitteln in Abhängigkeit von der Tabelle Klient und dem dortigen Feld Projekttyp? Der Hintergrund ist: Ich würde gerne in Abhängigkeit von einer Projektzuweisung zählen. Die aktuelle Formel zählt in Bezug auf alle Klienten, mir geht es jedoch um den Teilausschnitt der Klienten, die einem bestimmten Projekttyp in der Tabelle Klient zugeordnet sind, in diesem Fall HG oder SG.

    Update: Ich habe es mit diesem Code hinbekommen... ist das so ok oder ginge das noch eleganter?

    let myNr := number(this);
    cnt(select Klient where chosen(Gewalt, myNr) and Projekttyp = 1)

    Ich nutze Ninox erst seit einer Woche. Es fällt mir manchmal noch sehr schwer die Syntax und Logik der Scriptsprache zu verstehen. 

    Schönen Sonntag & herzlichen Dank und viele Grüße!!

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

       

      Du musst dich für deine Fragen nicht entschuldigen. Dafür ist das Forum ja da.

      Allerdings bin ich mir nicht sicher, ob ich das Problem richtg verstanden habe.Du kannst die Bedingungen für das cnt() ja verknüpfen, so, wie du es in deiner Formel oben gemacht hast:

      let myNr := number(this);
      cnt(select Klient where Projekttyp = 1 and chosen(Gewalt, myNr))

      Dann bekommst du halt die Anzahl der Klienten in dieser Kombination. Das heißt, um die Häufigkeit des jeweiligen Themas in allen Kombinationen zu ermitteln, müsstest du für jede Option im Feld 'Projekttyp' ein solches Formelfeld erstellen. Wenn sich die Einträge nicht ständig ändern und ihre Zahl überschaubar ist, wäre das wohl die einfachste Möglichkeit.

      Ansonsten sollte man vielleicht auch für den Projekttyp ein (einfaches) dynamisches Auswahlfeld nehmen. Damit wäre man bei vielen und/oder sich häufig ändernden Projekttypen flexibler.

      Aber - wie gesagt: Ich bin mir nicht sicher, ob ich dein Anliegen richtig verstanden habe.
       

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

      Oh, das Update war noch nicht zu sehen. Ich würde aus Performance-Gründen die Reihenfolge der Bedingungen ändern, aber grundsätzlich ist es so richtig.

    • Manuel_Drews
    • vor 6 Monaten
    • Gemeldet - anzeigen

    Vielen, vielen Dank! Das funktioniert jetzt wirklich gut. Freu mich, hab gestern viel zu viele Stunden mit Rätsel raten verbracht.

    Es fehlt dann doch noch die Erfahrung, welche Dinge deutlich eleganter in den Code geschrieben sind (Schleifen, Performance-Geschichten, wie die Reihenfolge, auf die Du noch hinweist). Oft denke ich noch sehr kompliziert und baue den Code zu komplex oder unsinnig auf. Manchmal ist es aber auch eine Schwäche in der Art und Weise wie die Syntax zu formulieren ist. Ist halt schon ein Lernthema. Bin Psychologe und kein Coder, aber Lernen geht immer :-)

    Bin wirklich froh, dass Du mir geholfen hast. Ich empfinde die Lernkurve, obwohl Ninox ja sehr zugänglich gestaltet ist, immer noch als ziemlich steil. Dieses Forum ist wirklich goldwert. 

Content aside

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