0

vorher erzeugte Zeile im Loop entfernen - Bedarfsplanung

Hallo liebe Ninox Community,

Ich habe eine Auswertung, die mir die Bedarfe von Komponenten summieren und anzeigen soll. hierfür habe ich Artikel, die über eine Montageliste mit Untertabelle Montagepositionen verbunden sind. Des weiteren sind die mit Auftragspositionen und Auftragsrahmen sowie Lagerbeständen verbunden.

Nun lasse ich mir eine Auswertung per loop erstellen, die in jeder Zeile die Komponente, deren Lagerbestände, den Auftragsbestand des Fertigartikels, dessen Rahmenbestand und eine Auflistung der Aufträge darstellt. Soweit recht übersichtlich.

Jetzt kann eine Komponente ja in mehrere Fertigartikel gehen. damit hat sie mehrere Zeilen, die über den Loop aufsummiert werden und dann nur die Summe zeigen. funktioniert auch. 

Cooler wäre es allerdings, wenn immer nur eine Zeile pro Komponente angezeigt würde und die Aufträge nach Liefertermin sortiert in einem Feld wären und hier bin ich dann raus... gibt es die Möglichkeit im Loop meinen n-1 Datensatz wieder zu entfernen? sowie den n-1 array (mybrr) zu speichern und um den vom nächsten durchlauf zu ergänzen? (wie ich das mit den Aufträgen und Rahmen mache)

hier der Code dazu:

let mypbart := 0;
let myAB := 0;
let myRB := 0;
let mydate := 'Planung bis';
let myArr := for i in (select Montagepositionen) order by Komponente.AR_NO do
        let myfart := i.Montageliste.Fertigartikel.AR_NO;
        let mybart := i.Komponente.AR_NO;
        let mybrr := for j in select Auftragspositionen where Artikel.AR_NO = myfart do
                j.("<b>" + Artikel.AR_NO + " " + Liefertermin + " - " + 'offene Menge' + " St." + "<br>")
            end;
        if mybart = mypbart then
            mypbart := i.Komponente.AR_NO;
            myAB := myAB + sum((select Auftragspositionen where Artikel.AR_NO = myfart and Liefertermin < mydate).'offene Menge') * i.Anzahl;
            myRB := myRB + sum((select Auftragsrahmen where Artikel.AR_NO = myfart).'offene Menge') * i.Anzahl;
            i.("<tr>

<td>" + "<b>" + " " + " </td>

<td>" + "<b>" + "   " + " </td>

<td>" + "<b>" + "<font color=red>" + " SUMME: " + " </td>

<td>" + "<b>" + myAB + " St. " + " </td>

<td>" + "<b>" + myRB + " St. " + " </td>

<td>" + "<b>" + "<font color=green>" + mybrr + "</td></tr>")
        else
            mypbart := i.Komponente.AR_NO;
            myAB := sum((select Auftragspositionen where Artikel.AR_NO = myfart and Liefertermin < mydate).'offene Menge') * i.Anzahl;
            myRB := sum((select Auftragsrahmen where Artikel.AR_NO = myfart).'offene Menge') * i.Anzahl;
            i.("<tr>

<td>" + "<b>" + Komponente.AR_NO + " - " + Komponente.AR_BEZ + " </td>

<td>" + "<b>" + sum(Komponente.Lagerbestand.Bestand) + " St. " + " </td>

<td>" + "<b>" + sum((select Lagerbestand where Artikel2.AR_NO = mybart and Lager > 2).Bestand) + " St. " + " </td>

<td>" + "<b>" + myAB + " St. " + " </td>

<td>" + "<b>" + myRB + " St. " + " </td>

<td>" + "<b>" + "<font color=green>" + mybrr + "</td></tr>")
        end
    end;
html("<table style = 'width:100%;'border=1'>" + "<thead>" + "<td>" + "<b>Komponentendaten</b>" + "</td>" + "<td>" + "<b>Lagerbestand </b>" + "</td>" + "<td>" + "<b>Davon in Fremdlager</b>" + "</td>" + "<td>" + "<b>Komponentenmenge in Aufträgen</b>" + "</td>" + "<td>" + "<b>Komponentenmenge in Rahmen" + "</td>" + "<td>" + "<b> Aufträge + Liefertermin </b>" + "</td>" + "</tr>" + join(myArr, ""))

 

eventuell hat ja jemand eine Lösung hierzu. ich bin auch offen für andere Ansätze für dieses Problem.

 

Vielen Dank vorab und euch ein schönes Wochenende.

3 Antworten

null
    • Torsten_Stang.1
    • vor 2 Jahren
    • Gemeldet - anzeigen

    wenn ich es richtig verstehe, hast Du im Array im Zweifel x mal das gleiche, aber jeweils richtige Ergebnis?

    Dann sollte es helfen, das Array mit unique() auszugeben.

    Am Ende also

    + join(unique(myArr),""))
    • MD
    • Christian_Braunlich
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Hallo Torsten, leider nicht ganz. Ich summiere im Loop wenn die Artikelnummer gleich ist quasi die Menge vom Vorgänger rein somit ist immer mein letzte Ergebnis von gleichen Zeilen richtig. Dazu kommt, dass ich zu blöd bin den den Loop mit j zu summieren (hier ist jede Zeile noch unterschiedlich) der die Einzelnen Liefertermine auflistet. aber eventuell bekomme ich das ja mit einem andere Select-Weg irgendwie hin...

    Danke für den Tipp. Wenn ich nun alle Zeilen gleich hinbekomme hab ichs.

    • MD
    • Christian_Braunlich
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Also mit Vorgänger meine ich den vorherigen Loop durchlauf.

Content aside

  • vor 2 JahrenZuletzt aktiv
  • 3Antworten
  • 54Ansichten
  • 3 Folge bereits