Ich komme mit der Erstellung einer fortlaufenden Nummer nicht klar.
Hallo,
ich bin absoluter Neuling was das Programmieren und das Programm. von Ninox angeht. Ich habe mir eine Tabelle gebastelt, wo unter anderem Kurs Nummern, Name, ST.-Nr., Datum, etc aufgelistet werden.
Nun möchte ich, dass bei einer neuen Datensatzeingabe auch eine neue automatisch generierten Nummer in der Spalte ST.-Nr. erzeugt wird. Ich habe das Forum hier schon durchforstet aber alle Hilfen die ich hier finde, funktionieren leider nicht.
Würde mich über Hilfe von Euch freuen.
9 Antworten
-
hallo ich mache es so
1.ein Zahlenfeld anlegen.. BriefNr ... format einstellen Präfix BR-
in Felder bearbeiten. bein neuen Datensatz folgenden Skript ausführen
2. BriefNr := max((select 'BriefeE-MailSchreiben').BriefNr) + BriefNr + 1;
im ersten Datensatz die WunschanfangNr eingeben. zb.3000 oder ähnlich
es wird dann zur Nr beim neuem Datensatz immer die 1 dazugezählt es geht auch 10 sprünge.
viel erfolg
-
2. BriefNr := max((select 'BriefeE-MailSchreiben').BriefNr) + 1;
-
Guten Morgen, der gängige Ansatz ist der, dass man mit einem kleinen Script unter „Bei neuem Datensatz folgendes Script ausführen“ nach der höchsten vergebenen Nummer sucht und die betreffende Zahl um 1 erhöht. In der einfachsten Form für eine 3-stelllige fortlaufende Nummer mit führenden Nullen könnte das bspw. so aussehen:
let NeueNr := number(max(select DEINETABELLE).'St.-Nr.')
'St.-Nr.' := format(NeueNr + 1, "000“)
Um konkrete Tipps zu geben, müsste man aber mehr darüber wissen, wie sich die automatisch zu vergebende Nummer zusammensetzen soll. Geht es tatsächlich wie im Beispiel nur um eine fortlaufende Nummer, die jeweils um 1 hochgezählt wird (wieviel Stellen?), oder soll sie noch andere Elemente enthalten, z. B. vorangestellte Buchstaben, das aktuelle Jahr oder was auch immer?
-
Vielen Dank für die schnellen Antworten.
@DerCopytexter: mit deiner Beschreibung bin ich am weitesten gekommen. Bei den anderen hat das nicht ohne eine Fehlermeldung funktioniert. Habe den Fehler aber auich nicht gefunden. Nun habe ich folgendes Eingegeben:
let NeueNr := number(max(select 'Erste Hilfe Bescheinigungen').'Nr.-St.');
'Nr.-St.' := format(NeueNr + 1, "00000000")Jetzt ist das Problem das diue Spalte immer noch leer bleibt ;(. Was mache ich falsch? Gerne würde ich noch vor der laufenden Nummer noch einen Buchstaben stellen.
Danke für Eure Hilfen.
-
Habe leider gerade keine Zeit zum Ausprobieren, aber so als erste Idee: Kann es sein, dass noch gar keine Nummer existiert, die dann weitergezählt werden könnte? Falls ja, einfach die erste Nummer manuell eingeben ( als „Startnummer“ quasi).
Um der Nummer einen Buchstaben, z. B. ein „X“, voranzustellen, könnte man den Code wie folgt anpassen:
let NeueNr := number(max(select 'Erste Hilfe Bescheinigungen').substr('Nr.-St.', 1, 8))
'Nr.-St.' := "X" + format(NeueNr + 1, "00000000")
Ist wie gesagt nicht getestet, und bei Trockenübungen schleichen sich ja gerne mal Fehler ein, deshalb wie immer: „Nach bestem Wissen und Gewissen, aber ohne Gewähr“. ;)
-
Hmm
bin ein Schritt weiter. Also er schreibt mir jetzt immer die Zahl 1. Er zählt nur nicht weiter. Im neuen Datensatz erscheint dann wieder die 1. Ersetze ich die 1 in der Formel durch eine 2, dann erscheint anstelle der 1 die 2 ohne das sie weiter gezählt wird.
Und ich hatte auch keine Startnummer. Diese habe ich im ersten Datensatz nun hinterlegt.
-
Von Null auf Eins - immerhin ... ;)
Im Ernst. Hab's jetzt doch mal getestet. So müsste es aber wirklich gehen:
let NeueNr := number(substr(last((select 'Erste Hilfe Bescheinigungen').'Nr.-St.'), 1, 8))
'Nr.-St.' := "X" + format(NeueNr + 1, "00000000")
Wobei die erste Nummer denselben Aufbau haben muss, also "X00000001". Sonst wird das substr() falsch interpretiert.
-
Juhuuuu es hat funktioniert. Danke an alle die hier ihre Hilfe angeboten haben.
-
Juhuuuu es hat funktioniert. Danke an alle die hier ihre Hilfe angeboten haben.
Content aside
- vor 5 JahrenZuletzt aktiv
- 9Antworten
- 1843Ansichten