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
-
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
-
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
-
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