0

nächste freie Nummer auswählen

Hallo zusammen,

 

ich arbeite mit Artikeln welche gestaffelt sind nach art und weise. sprich artikel lebensmittel ist 100100 dann fortlaufend und artikel Mechanik ist 200100 und fortlaufend.

wenn ich nun einen neuen artikel anlege und diese nummer ist belegt habe ich es das die nummer einfach verschwindet. das funktioniert soweit gut. gibt es aber die möglichkeit das wenn ich nun einen mechanik artikel anlege, das er mir dort die nächste freie Nummer im Bereich 200100 in das Artikelfeld schreibt?

gruss und schönes Wochenende

Michael

6 Antworten

null
    • Ninox-Professional
    • planoxpro
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Hallo Michael, ja, das geht natürlich. Die Umsetzung hängt aber von verschiedenen Faktoren ab. So muss Ninox bspw. wissen, zu welcher Kategorie der neue Artikel gehört, um die nächste freie Nummer zu ermitteln. Hier wäre also zu klären, wo diese Information herkommt. Wenn ich mal davon ausgehe, dass die Nummer in einem Textfeld gespeichert wird (ArtikelNr), immer denselben Aufbau hat und bei 100 beginnen soll, dann könnte der Code für einen Trigger oder Button bspw. so aussehen:

     

    let myKat := "100";
    let lastNr := last((select Artikeltabelle where substr(ArtikelNr, 0, 3) = myKat) order by ArtikelNr);
    let newNr := number(substr(lastNr.ArtikelNr, 3)) + 1;
    if newNr < 100 then newNr := 100 end;
    ArtikelNr := myKat + format(newNr, "000")

    • anonyml
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Ich werde es gleich mal testen zu Hause.

    ich hätte es gern. Das ich als Beispiel als Artikel Nummer die 200100 eintrage. Da diese und die nächsten 8 Nummer schon vergeben sind soll er automatisch die 200108 nehmen. 

    • SL Recycling
    • Michael_Lubbehusen
    • vor 2 Jahren
    • Gemeldet - anzeigen

    let myKat := "100";
    let lastNr := last((select '2_Artikel' where substr('Produkt Nr.', 0, 3) = myKat) order by 'Produkt Nr.');
    let newNr := number(substr(lastNr.'Produkt Nr.', 3)) + 1;
    if newNr < 100 then newNr := 100 end;
    'Produkt Nr.' := myKat + format(newNr, "000")

    Super das funktioniert schonmal richtig gut, wie ich es mir fast wünsche :) 

    nun habe ich jedoch das Problem, das ich ca 35 Kategorien habe. ich gehen also bei und nehme kategorie 901000 aber da würde er nun ja auch in die 100er kategorie springen. 

    ich müsste also von den zahlen die ich eintrage, die erst 4 auslesen und dann als Kategorie setzen lassen.

    beispiel 901000 das wäre die kategorie 9010 die weiteren zahlen wären dann fortlaufend. 

    • SL Recycling
    • Michael_Lubbehusen
    • vor 2 Jahren
    • Gemeldet - anzeigen

    (sorry mit den accout überschneidungen, anonyml und Michael Lübbehüsen sind die gleichen Personen. 

    das eine Geschäflich, das andere Privat :) )

     

    gruß Michael 

    • Ninox-Professional
    • planoxpro
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Also, die Kategorie bestehht immer aus 4 Ziffern und soll eingetippt werden? Und danach folgt eine 2-stellige laufende Nummer, die ninox automatisch vergeben soll? Dann könnte man einen Trigger "Nach Änderung" im Feld ArtikelNr einrichten:

     

    let me := number(this);
    let myKat := substr(ArtikelNr, 0, 4);
    let lastNr := last((select Artikel where substr(ArtikelNr, 0, 4) = myKat and Nr != me) order by ArtikelNr);
    let newNr := number(substr(lastNr.ArtikelNr, 4)) + 1;
    ArtikelNr := myKat + format(newNr, "00")

     

    Dabei würden immer nur die ersten vier Zeichen ausgewertet, mehr müsste man also auch nicht eintippen. Allerdings ist das eine sehr einfache, rein technische Umsetzung ohhne jegliche Plausibilitätsprüfung.

    • SL Recycling
    • Michael_Lubbehusen
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Super... Vielen Dank.

    Für erste hilft mir dies sehr weiter. Funktioniert :)

Content aside

  • vor 2 JahrenZuletzt aktiv
  • 6Antworten
  • 216Ansichten