0

Unterschiedliche Nummernkreise separat hochzählen

Hallo zusammen,

In einer Warenwirtschaft führe ich manuelle und Shop-Bestellungen zusammen. Diese werden in zwei Bestellnummernkreisen A-1234 und M-1234 getrennt. Wie kann ich die manuellen Bestellnummern separat hochzählen?

Zurzeit mache ich es mir einfach und berechne auf Basis der letzten Nummer - egal, ob A- oder M:

let BookNr := number(max((select Buchungen).substr('Buchungsnr.', 2, 6))) + 1;'Buchungsnr.' := "M-" + format(BookNr, "0000")

Das funktioniert insoweit, dass es einmalige Nummert erzeugt, ist aber unschön.

Ideen? Vielen Dank dafür!

4 Antworten

null
    • UweG
    • vor 5 Monaten
    • Gemeldet - anzeigen

    Wenn man vorab weiss, für welchen Nummernkreis eine neue Nummer erzeugt werden soll, kann man den Datenpool einschränken.
    let BookNr := null;
    let vTabl := select Buchungen
    If A then
    BookNr :=  number(max((vTabl ['contains(Buchungsnr.',"A"] ).substr('Buchungsnr.', 2, 6))) +1;
    'Buchungsnr.' := "A-" + format(BookNr, "0000")
    else
    BookNr :=  number(max((vTabl ['contains(Buchungsnr.',"M"] ).substr('Buchungsnr.', 2, 6))) +1;
    'Buchungsnr.' := "M-" + format(BookNr, "0000")
    else
    end

    Tippfehler bitte ich zu verzeihen.
    Sollte man mehr als 2 Nummernkreise haben, benutzt maan die switch...case Anweisung.
    Man spart sich dadurch undurchschaubare Verschachtelungen.

    • Wikontor UG (haftungsbeschränkt)
    • stewi
    • vor 5 Monaten
    • Gemeldet - anzeigen

    Vielen Dank Uwe. Nach anderen Arbeiten bin ich das Thema noch einmal angegangen.

    Ninox beschwert sich über das A in Zeile 3 des Scripts .

    Noch der Hinweis, dass nur der Nummernkreis "M-" hochgezählt wird, da die A-Nummern vom Shop abgeholt und unverändert in die Tabelle geschrieben werden.

    Gruß und vielen Dank.

    • mirko3
    • vor 5 Monaten
    • Gemeldet - anzeigen

    Hi , versuche es mal so. Mirko

    let tab := (select Buchungen);
    let lastNr := max(tab[substr('Buchungsnr.', 0, 1) = "M"].number(substr('Buchungsnr.', -4)));
    let nextNr := format(lastNr + 1, "0000");
    'Buchungsnr.' := "M-" + nextNr
    
    • Wikontor UG (haftungsbeschränkt)
    • stewi
    • vor 5 Monaten
    • Gemeldet - anzeigen

    Funktioniert. Perfekt - Danke Mirko!

Content aside

  • Status Answered
  • vor 5 MonatenZuletzt aktiv
  • 4Antworten
  • 70Ansichten
  • 3 Folge bereits