Fortlaufende Nummer - Neuer Datensatz
Hallo
Damit die Datensätze immer eine eindeutige Identifikation erhalten mit einem Tageszähler habe ich folgendes Script bei neuem Datensatz eingefügt.
let myDatum := format(today(), "YYMM");
let myLaufNr := cnt(select 'Pixel Anweisung [PAW]' where substr('PAW ID', 0, 8) = myDatum) + 1;
'PAW ID' := "PAW" + "-" + myDatum + format(myLaufNr, "000")
Ziel ist es eigentlich JahrMonatFortlaufend also "Jahr zwei stellen" Monat "zwei stellen" Fortlaufende nummer "dreistellig, angefangen bei 001"
Das Berechnungfeld `PAW ID`ist vorhanden ja.
5 Antworten
-
Hallo Sandro,
dem Berechnungsfeld kann man keine Werte mit := zuweisen. Und die Zählung der Datensätze mit cnt() führt zu einem Problem wenn ein Datensatz in der Mitte gelöscht wird. z.B. du hast 9 Datensätze im März 2021. Die Höchste Nummer ist 2103009. Die nächste wäre dann 2103010. Wenn du aber (warum auch immer) den Datensat nummer 2103003 löschst, kriegst du für den neuen Datensatz die Nummer 2103009.
Mein Vorschlag: 'PAW ID' als Textfeld anzulegen und die Formel:
let myDatum := format(today(), "YYMM");
let myLaufNr := max((select 'Pixel Anweisung [PAW]')[substr('PAW ID', 4, 4) = myDatum].number(substr('PAW ID', 8))) + 1;
'PAW ID' := "PAW" + "-" + myDatum + format(myLaufNr, "000")
Leo
-
Hallo Leo
Mein Fehler, das Feld war schon ein Textfeld. Nun mit deiner Anpassung klappt es wunderbar wider. Verstehe die Problematik auch mit dem löschen und den ID`s
Danke für deine Unterstützung
gruss Sandro
-
Hallo,
ich habe das oben bei mir auch ausprobiert, aber leider klappt es nicht.
Kleine Anmerkung ich bin völlig neu bei Ninox.
Meine Mitgliedsnummer besteht aus 5 Zahlen. Die erste beiden sind das Jahr zweistellig und die letzten 3 die fortlaufende Nummer in diesem Jahr. Hat des vielleicht etwas mit den Zahlen hinter Mitgliedsnummer zu tun?
wenn ich das Format von today auf "YYYY" setze funktioniert es.
Unten einmal mein Code.
let AktJahr := format(today(), "YY");
let LaufNr := number(max((select Mitgliederliste where substr(Mitgliedsnummer, 0, 4) = AktJahr).substr(Mitgliedsnummer, 5, 3))) + 1;
Mitgliedsnummer := AktJahr + format(LaufNr, "000")Danke im Voraus.
Content aside
- vor 2 JahrenZuletzt aktiv
- 5Antworten
- 503Ansichten
-
2
Folge bereits