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
-
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. -
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.
-
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
-
Funktioniert. Perfekt - Danke Mirko!
Content aside
- Status Answered
- vor 1 JahrZuletzt aktiv
- 4Antworten
- 76Ansichten
-
3
Folge bereits