0

Addition Inventurzählung

Hallo, allen ein tolles Jahr 2024,

ich habe eine Tabelle in der ich Inventuren erfasse. Diese Tabelle hat lediglich zwei Spalten: Datum und Bemerkungen.

In einer Untertabelle erfasse ich dann die Zahlung der Artikel. Aus verschiedenen Gründen liegen gleiche Artikel nicht immer im gleichen Fach. Sie erscheinen in der Tabelle also mehr als einmal.

Für den Bestand im Artikelstamm ermittle ich zuerst die letzte Inventur.

let myID := this;
let myMaxInventurDatum := max(myID.Artikel.Inventur.Datum);
let myInventurBestand := first(myID.Artikel[Inventur.Datum = myMaxInventurDatum]);
myInventurBestand.Anzahl

Damit erfasse ich aber nur die Menge im letzten Lagerfach. Ich müsste jetzt noch gleiche Artikel in verschiedenen Lagerplätzen addieren. Nur wie?

Hier kommt der Anfänger nicht weiter und bittet um Hilfe!!! Mein Dank ist Euch gewiss!

6 Antworten

null
    • Torsten_Stang.1
    • vor 3 Monaten
    • Gemeldet - anzeigen
    let myID := this;
    let myMaxInventurDatum := max(myID.Artikel.Inventur.Datum);
    let myInventurBestand := myID.Artikel[Inventur.Datum = myMaxInventurDatum];
    sum(myInventurBestand.Anzahl)
    

    so vielleicht?

      • Ralf_Grotschel
      • vor 3 Monaten
      • Gemeldet - anzeigen

        Danke für die Antwort. Das habe ich auch probiert. Funktioniert aber nicht.

      • Torsten_Stang.1
      • vor 3 Monaten
      • Gemeldet - anzeigen

       

      je näher ich mir den Code anschaue, umso weniger blicke ich beim Datenmodell durch. Kannst Du das ein wenig näher erörtern?

      Mir will gerade nicht einleuchten, warum die gezählte Anzahl eines Artikels in der Untertabelle(?) 'Artikel' und nicht in der weiteren Untertabelle 'Inventur' zu finden ist...

      Oder noch besser: Kannst Du eine Demo-Version der Datenbank mit Dummydaten zur Verfügung stellen?

      • Ralf_Grotschel
      • vor 3 Monaten
      • Gemeldet - anzeigen

       Hallo, danke für die Tipps. Ich habe gerade die Tabellen für Inventur etc. gelöscht und noch einmal neu angelegt. Das ganze sieht nun wesentlich aufgeräumter aus. Als neuer Code ergibt sich somit:

      let myID := this;
      let myMaxInventurDatum := max(myID.InvPlatten.Inventur.Inventurdatum);
      let myInventurBestand := first(myID.InvPlatten[Inventur.Inventurdatum = myMaxInventurDatum]);
      sum(myInventurBestand.Anzahl)

      Es bleibt aber das Problem, das lediglich der jeweils erste Eintrag einer Platte in der Inventurliste angezeigt wird. Eine Summieren der gleichen Platten wird nicht durchgeführt.

      Wenn nötig würde ich morgen einmal versuchen eine DB weitestgehend zu leeren und lediglich mit einigen Beispieldaten zu füttern.

    • Torsten_Stang.1
    • vor 3 Monaten
    • Gemeldet - anzeigen
     said:
    Es bleibt aber das Problem, das lediglich der jeweils erste Eintrag einer Platte in der Inventurliste angezeigt wird.

     das verwundert kaum, mit

    first(myID.InvPlatten[Inventur.Inventurdatum = myMaxInventurDatum])
    

    holst Du Dir auch nur den ersten Eintrag in die Variable, aus der Du die Summe bilden willst.

    let myID := this;
    let myMaxInventurDatum := max(myID.InvPlatten.Inventur.Inventurdatum);
    let myInventurBestand := myID.InvPlatten[Inventur.Inventurdatum = myMaxInventurDatum];
    sum(myInventurBestand.Anzahl)
    

    so sollte es eigentlich gehen, wenn die Anzahl tatsächlich aus der Tabelle 'InvPlatten' hervorgeht.

     

    Wenn nicht, wäre es definitiv hilfreich, eine abgespeckte Variante Deiner DB zur Verfügung zu stellen...

      • Ralf_Grotschel
      • vor 3 Monaten
      • Gemeldet - anzeigen

       Vielen Dank! Es hat nun funktioniert. Die Anweisung "first....) war das Problem!

      Nochmals vielen Dank!

Content aside

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