0

Hilfe bei DAF -> Feld 'Zahl' summieren

Guten Abend zusammen,

ich komme mal wieder nicht weiter und brauche bitte eure Hilfe.

Anbei eine db zur besseren Erklärung meines Problems.

Ich habe in Tabelle B zwei Felder Anzahl insgesamt und Zahl insgesamt.

In Feld Anzahl insgesamt sollen nur die Datensätze zusammengezählt werden, die ein 'ja' enthalten. Das Ja wird durch ein DAF generiert in dem Fall ist es

select Status= 1

Selbiges sollte auch bei Feld Zahl insgesamt passieren.

Bisher habe ich es nur geschafft, das alles gezählt wird. Es sollte aber bei einem neuen datesatz wieder von null an gezählt werden.

Bitte entschuldigt, falls ich mich unverständlich ausgedrückt habe, aber ich sitze den ganzen Tag daran und habe ein Brett vorm Kopp! 😆

 

Vielen Dank.

 

gruß Kruna

16 Antworten

null
    • Kruna
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Ein herzliches hallo zusammen,

    sorry, dass ich mich hier einklinke, aber ich habe eine zwar nicht ganz ähnliche Situation, jedoch kann ich diese Lösung sehr gut bei mir einsetzen. Vielen Dank dafür, das ist ganz große Klasse.

    Nun kommen bei mir doch einige Fragen auf, vllt hat ja jemand eine Idee, wie ich das gelöst bekomme. Ich komme einfach nicht von alleine darauf. Ich habe hierzu eine kleine BeispielDB  angefügt.

    1. Wie bekomme ich es hin, dass in Tabelle Kunde B im Formelfeld die Summe angezeigt wird, je nachdem welche Auswahl ich im DMAF anklicke. Bisher habe ich mit

    let me := this;
    sum('Kunden C2'.Zahl)

    nur die Gesamtsumme aus der Tabelle.

    2. Desweiteren brauche ich ebefalls die Summe, je nachdem welche Auswahl im DMAF steht und ob ES/DS (ES = 1, DS = 2). ZB wenn ich im ersten Datensatz der Tabelle Kunde B Auswahl 1 und 2 anklicke, dann sollte das Ergebnis 3 sein.

    3. Wie kann ich im Drucklayout die Auswahl des DMAF anzeigen lassen? Wäre es möglich, dass die Auswahl nebeneinander quasi als Auflistung angezeigt wird?  Wenn möglich auch noch in FettSchrift (eventuell mit html)? Ich habe es soweit über ein einfaches Auswahlfeld hinbekommen, Filter und Auflisten (ist dann aber nicht in FettSchrift), aber eigentlich sollte es idealerweise über das DMAF funktionieren.

    EDIT: Ich sehe gerade, dass es der BeispielDB Rschnungen(1) ein Formelfeld mit selectionList gibt. Könnte man das irgendwie mit einbinden?

    Für jegliche Hilfe bin ich seeehr dankbar. 🙂

     

    Gruß Kruna

    • Fox Concepts
    • Christoph.2
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Hi Kruna,

    mit der Lösung aus https://forum.ninox.de/t/h7hs63l#m1hs6mf kannst du nun entweder deine verknüpften Datensätze markieren, oder in der Summierung direkt abfragen, ob die Datensätze in der DMFA enthalten sind und demnach filtern.

    Du kannst es aber auch durch iterieren durch die DMFA Auswahl und der record() Funktion machen:

    sum(for i in numbers(Auswahl) do
            record('Kunden C',i).Zahl
        end)
    
      • Kruna
      • vor 2 Jahren
      • Gemeldet - anzeigen

      Christoph Vielen Dank, dass Du die hier Zeit nimmst, um mir zu helfen. 👍

      Ok, das hat geklappt! Geht das denn auch ohne den Status? Der ist irrelevant für meine eigentliche Datenbank. Das Auswahlfeld Status habe ich da nur mit reingenommen, um auszuprobieren, wie ich meinen 'Lösungen' näher kommen könnte.

      • Fox Concepts
      • Christoph.2
      • vor 2 Jahren
      • Gemeldet - anzeigen

      Kruna hab meinen Kommentar von vorhin nochmal abgeändert, dass du ohne Status auskommst.

    • Fox Concepts
    • Christoph.2
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Zum Punkt 2 (ES/DS). Ich verstehe nicht ganz was du damit machen willst, aber so wie du es beschreibst könnte das die Lösung sein.

    sum(for i in numbers(Auswahl) do
            record('Kunden C',i).(if text(Auswahl) = "ES" then 1 else 2 end)
        end)
    
      • Kruna
      • vor 2 Jahren
      • Gemeldet - anzeigen

      Christoph genauso habe ich es mir vorgestellt!!! Ich könnte gerade die ganze Welt umarmen und Dich!😁

      Was das Drucklayout angeht, habe ich wohl um zu viele Ecken gedacht und einiges verwechselt! Ich habe es soweit gelöst, bzw. gibt es da nichts zu lösen, da ich nur das Feld im Drucklayout anzeigen lassen muss, also zumindest funktioniert es gerade wie es soll

    • Fox Concepts
    • Christoph.2
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Zu Punkt 3:

    Eine Auflistung der Auswahl bekommst du, wenn du das DMFA als Text ausgeben lässt:

    concat(text(Auswahl))

    Um das im Ninox Druckeditor mit html beareiten zu können, brauchst du ein Mac Gerät oder eine Erweiterung der Druckengine.

    html("<b>" + concat(text(Auswahl)) + "</b>")
    

    Oder du siehst dir mal die neue dynamische Druckengine mit Carbone-Integration an.

      • Kruna
      • vor 2 Jahren
      • Gemeldet - anzeigen

      Christoph das concat hatte ich noch vergessen. Jetzt ist alles prima!

      Ich habe schon viel über Carbone gelesen, mich aber noch nicht daran getraut. Im Moment komme ich mit ein paar workarounds gut zurecht. Bei mir sind die drucklayouts perse recht simpel.

      Aber vllt komme ich nochmal darauf zurück, wenn es gar nicht mehr geht.

      Vielen, tausend Dank für Deine Hilfe!

    • Kruna
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Hallo Christoh,

     

    eine Frage habe ich doch noch zu Punkt 1.

    Wie verhält es sich denn, wenn ich ein dynamisches Auswahlfeld habe?

    Ich habe das so versucht, funktioniert leider nicht

    sum(for i in number(DAF) do
            record('Kunden C',i).Zahl
        end)
    

    Gruß Kruna

      • Fox Concepts
      • Christoph.2
      • vor 2 Jahren
      • Gemeldet - anzeigen

      Kruna das sollte prinzipiell schon gehn, aber die Schleife und sum() ist dann natürlich unnötig (da es ja nur mehr eine Einzelauswahl ist).

      record('Kunden C', number(DAF)).Zahl
      
      • Kruna
      • vor 2 Jahren
      • Gemeldet - anzeigen

      Christoph ahhh, das war es! Vielen Dank nochmals

    • Kruna
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Guten Morgen Christoph,

     

    entschuldige, ich brauche nochmal Deine Hilfe, da ich es alleine, nach langen 'herumprobieren', nicht hinbekomme.

    Ich habe mal Deine DB(Rechnungen 1) aus dem anderen Post genommen und meiner Frage angepasst.

    Wie schaffe ich es, wenn ich auf den Button klicke, dass sich der Status (DAF) auf Status Nr 2 --> 'versendet' ändert?

    Ich habe Dein Script

    let me := this;
    let auswahl := (select Rechnungen where Mahnstop = true).number(Nr);
    Mahnstop := auswahl

     

    versucht anzupassen, aber es gelingt mir einfach nicht.

     

    Vielen Dank schon mal.

    Gruß kruna

      • Fox Concepts
      • Christoph.2
      • vor 2 Jahren
      • Gemeldet - anzeigen

      Kruna Hallo Kruna,

      ich weiß jetzt nicht genau, bei welchen Rechnungen du den Status ändern möchtest. Um ein Dynamisches Auswahlfeld zu setzten musst du entweder den Record direkt, oder die Nr des Records setzen. Dazu musst du den Status-Record suchen, der den Namen "Versendet" hat. Und nachdem es eine Einzelauswahl ist, musst du mit first() den Array auf einen einzelnen Record reduzieren. Um alle, dem Kunden zugewiesenen Rechnungen zu ändern, ist das der Code für deinen Button:

      Rechnungen.(Status := first((select Status)[Text = "Versendet"]))
      

      Gruß Christoph

    • Kruna
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Hallo Christoph, vielen Dank für deine Hilfe.

     

    Christoph said:
    ich weiß jetzt nicht genau, bei welchen Rechnungen du den Status ändern möchtest

    Entschuldigung, jetzt fällt es mir auch auf, denn genau das habe ich vergessen dazuzuschreiben. Es soll der Status der Rechnungen geändert werden, die über das DMAF Mahnstop ausgewählt werden.

    Ich würde mit let me := this beginnen, weiß aber dann nicht mehr weiter, wo ich das me dann in

    Rechnungen.(Status := first((select Status)[Text = "Versendet"]))

    unterbringen soll.

    Kannst Du mir bitte weiterhelfen?

     

    Gruß Kruna

      • Fox Concepts
      • Christoph.2
      • vor 2 Jahren
      • Gemeldet - anzeigen

      Kruna 'this' (also den aktuellen Record) auf eine Variable 'me' legen ist nur in speziellen Fällen notwendig. Hier kannst du das DMAF direkt ansprechen und dir die selektierten Rechnungen-Records mit einer Schleife und der record() Funktion holen, welche dann geändert werden.

      let selectedRe := for i in numbers(Mahnstop) do
              record(Rechnungen,i)
          end;
      selectedRe.(Status := first((select Status)[Text = "Versendet"]))
      

      Gruß Christoph

      • Kruna
      • vor 2 Jahren
      • Gemeldet - anzeigen

      Christoph wow, ich bin jedesmal baff, das funktioniert tadellos!

      Wenn ich das Script lese, kann ich im nachhinein einiges nachvollziehen bzw verstehen und auch gut an meine db anpassen, aber von alleine würde ich niemals darauf kommen.

      Ich bin wirklich sehr dankbar für deine Hilfe, einfach Top!!!!👍

      Einen angenehmen Sonntag noch.

      Gruß Kruna