0

Fortlaufende Nummer

Hallo,

wir möchten bei unserer Fortlaufenden Angebotsnummer folgendes aussehen haben

Bsp:

letztes Jahr und letzte Angebotsnummer

2018170

Dieses Jahr

2019171

Die Aktuelle Funktion sieht wie folgt aus:

let y := year('Datum Erstellt am');
let c := cnt(select '5. Angebot' where year('Datum Erstellt am') = y);
Angebotsnummer := y + format(c, "000")

 

Was muss geändert werden?

 

Vielen Dank!

3 Antworten

null
    • Leonid_Semik
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Hallo Björn,

    ---

    Angebotsnummer := year('Datum Erstellt am') + format(cnt(select '5. Angebot'), "000")

    ---

    Wobei ich bei dieser Vorgehensweise eine Schwäche sehe: wenn, aus welchem Grund auch immer, ein Datensats aus der Mitte gelöscht wird, wird die Nummer bei neuen Datensatz eine Dublette sein. 

     

    Leo

    • Bjorn_Morer
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Danke für den Hinweis. 

    Das werde ich einmal bei unseren Anwendern diskutieren. Aber ich denke das wir dann bei der alten Variante bleiben.

    Björn 

    • Leonid_Semik
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Hallo Björn, die Alte Variante wird auch gleiche Probleme haben. Das ist der Befehl cnt(). Er gibt die Anzahl der Datensätze zurück. Angenommen du hast 100 Datensätze und fügst neuen Datensatz hinzu. Ninox zählt die Anzahl der Datensätze (101) und gibt diese dan formatiert als 2018101. Jetzt löschst du Datensat Nr.50. Di Anzahl der Datensätze ist wieder 100 und bei einem neuen Datensatz gibt dier die cnt() Funktion wieder 101 zurück. Normalerweise wird das Löschen der Datensätze verboten. Wenn du aber die Rechnungen nach ein gewisse Zeit archivierst und in eine Andere Tabelle speicherst, kann dier das alles passieren.Um das zu umgehen, muss man ein Zahlenfeld hinzufügen. Dieses nennt man z.B. ANNR und versteckt es.

    Dann Trigger bei neu:

    ---

    ANNR:=max(select '5. Angebot'.ANNR)+1

    ---

    Und die Angebotsnummer ist dann ein Funktionsfeld:

    ---

    year('Datum Erstellt am') + format(ANNR, "000")

    ---

    Leo

Content aside

  • vor 5 JahrenZuletzt aktiv
  • 3Antworten
  • 1551Ansichten