Feld mit automatischer fortlaufenden Nummer
Hallo liebe Ninox user,
Kann mir jemand sagen, was ich tun muss, damit ein Feld eine automatisch fortlaufenden Nummer generiert.
Herzlichen Dank für eure geschätzte Hilfe.
Thomas
13 Antworten
-
Hallo,
Ninox generiert immer ein Feld mit einer fortlaufenden Nummer.
Gruß
-
Stimmt, habe ich gar nicht richtig angeschaut. Wie kann ich das Format beeinflussen z.B. 2018-XXX?
Thomas
-
einfach ein neues Feld vom Typ "Berechnung" anlegen und bei Funktion folgendes eintragen:
"2018-" + Nr
-
Das kann er aber nicht immer verwenden da die ID sofern sie gelöscht wird nicht mehr vergeben wird..
das ist das Problem das ich selbst seit gut einer Woche versuche zu lösen..
-
Das passt ja schon mal. Das mit der ID verstehe ich und ist gut zu wissen. In meinem Fall stört mich der Verlust der gelöschten ID aber nicht besonders. Das heisst also, dass man die fortlaufende Nummer ansich nicht beeinflussen kann. Ich hätte jetzt z.B. am liebsten mit "2018-101" begonnen und dann hoch zählen lassen. Ich dachte, dass das mit einem # Zeichen vielleicht ginge. Irgend eine Idee?
-
Es gibt in Ninox verschiedene Möglichkeiten, laufende Nummern zu erzeugen. Deshalb ist es immer gut, etwas Kontext mitzuliefern, wofür die Nummer stehen, welchen Aufbau sie haben und wie sie erzeugt werden soll.
Die intern vergebene Datensatznummer würde ich allerdings nie dazu verwenden.
In diesem Fall soll es wohl eine dreistellige Nummer mit vorangestellter Jahreszahl sein. Wenn sie automatisch bei jedem Anlegen eines neuen Datensatzes generiert werden soll, könnte man in den Optionen der Tabelle unter „Bei neuem Datensatz folgendes Script ausführen“ schreiben:
let AktJahr := year(today());
let LaufNr := number(max((select TABELLE where substr(NUMMER, 0, 4) = AktJahr).substr(NUMMER, 5, 3))) + 1;
NUMMER := AktJahr + "-" + format(LaufNr, "000")
Wie immer nach bestem Wissen und Gewissen, aber ohne Gewähr.
-
Ja, eine dreistellige Nummer mit vorangestellter Jahreszahl soll es werden, das hast du richtig verstanden. Dein Script habe ich eingesetzt, bekomme aber noch kein funktionierendes Resultat. Da mach ich noch etwas falsch.
Im Feld mit dem Namen "RgNr" sollte am Schluss diese resultierende Nummer stehen. "RgNr" befindet sich in der Tabelle "Rechnungen". In dieser Tabelle habe ich ein Feld mit der Verknüpfung zu der Tabelle “K-Erwachsene“. Wenn ich für dieses verknüpfte Feld Änderungen vornehme gehe ich zu "Nach Änderungen folgendes Script ausführen“. Dort eingetragen steht bereits folgendes Script, welches auch funktioniert.
Anrede := text('K-Erwachsene'.Anrede);
Titel := 'K-Erwachsene'.Titel;
Vorname := 'K-Erwachsene'.Vorname;
Nachname := 'K-Erwachsene'.Name;
PLZ := 'K-Erwachsene'.PLZ;
Ort := 'K-Erwachsene'.Ort;
Adresse := 'K-Erwachsene'.Adresse;
RgNr := let AktJahr := year(today());
let LaufNr := number(max((select TABELLE where substr(NUMMER, 0, 4) = AktJahr).substr(NUMMER, 5, 3))) + 1;
NUMMER := AktJahr + "-" + format(LaufNr, "000")Dein Skript ist der fett gedruckte Teil oben, welchen ich zum bestehenden dazu gesetzt habe. Ich bekomme eine Meldung: Ende erwartet....usw. Kannst du aus dieser Beschreibung etwas machen? Danke im voraus.
-
TABELLE stand für den tatsächlichen Namen deiner Tabelle, NUMMER für den des Feldes. Diese Bezeichnungen müsste man natürlich entsprechend austauschen. Also, wenn die Tabelle "Rechnungen" heißt und das Feld "RgNr":
let AktJahr := year(today());
let LaufNr := number(max((select Rechnungen where substr(RgNr, 0, 4) = AktJahr).substr(RgNr, 5, 3))) + 1;
RgNr := AktJahr + "-" + format(LaufNr, "000")
Das müsste eigentlich funktionieren. Wobei "RgNr" ein Textfeld sein sollte.
-
Fantastisch! Funktioniert einwandfrei. Vielen Dank!
Thomas
-
Hallo,
ich habe eine ähnliche Anwendung. Nur möchte ich ein Gesprächsprotokoll eine laufende Nummer haben. Dabei soll von dem zugeordneten Projekt (inerne Projektnummer im Feld "Projekt-Nr") auf Basis des letzten Protokoll des Projektes die neue Projektnummer vergeben werden.
Beispiel: Projekt 15 hat noch keine Gesprächsnotiz daraus folgend müsste die Numemr P015-01 kommen. Wenn schon zwei vorhanden sind sollte P01-03 kommen.
Die Gesprächsnotizen sind mit den Projekten N:1 ohne Komposition verknüpft.
Ich wäre dankbar, wenn mir jemand einen Lösungsansatz zeigen könnte.
Vielen Dank
Martin
-
Hallo Martin. Angenommen die Tabelle heißen Projekte und Gesprächsnotizen. Und die Verknüpfungsfelder sind auch nicht umbenannt worden. Dann würde ich in der Tabelle Gesprächsnotizen ein Berechnungsfeld mit der Formel:
---
let my:=number(this.Nr);
let myNR:=cnt (Projekte.'Gesprächsnotizen'[number(Nr)<=my]);
Projekte.'Projekt-Nr'+"-"+format (myNR,"00")
---
Zur Erklärung: zuerst merkt sich Ninox die aktuelle ID als Zahl. dan geht er in die Haupttabelle Projekte zu dem verknüpften Projekt und zählt dort die Notizen mit ID weniger oder gleich der aiktuellen ID.
Vorteil bei berechnetem Feld ist es, wenn eine Zwischennotiz gelöscht wird, werden die Nummern alle nachgerückt. Wenn es nicht erwünscht ist kannst due diese Formel als Trigger bei neu einstellen
l
et my:=number(this.Nr);
let myNR:=cnt (Projekte.'Gesprächsnotizen'[number(Nr)<=my]);
'Notiz-Nr':=Projekte.'Projekt-Nr'+"-"+format (myNR,"00")
Leo
-
Danke, ich werde es gleich ausprobieren und melde mich dann.
-
Vielen Dank. Das hat sofort funktioniert!
Martin
Content aside
- vor 6 JahrenZuletzt aktiv
- 13Antworten
- 5693Ansichten