Automatische Rechnungsnummer
heyoo, hatte mir schon einen Beitrag zu dem Thema durchgelesen steige aber immernoch nicht so ganz durch.. kann mir jemand helfen?
9 Antworten
-
Hallo Tom, zur automatischen Erstellung einer Rechnungsnummer gibt es verschiedene Möglichkeiten. Zum Beispiel über einen sogenannten Trigger "Nach Änderungen, folgendes Skript ausführen" in den Optionen der betreffenden Tabelle. Oder man erstelle eine Schaltfläche dafür. So oder so braucht man eine Formel oder ein kleines Skript, das dann die eigentliche Berechnung der Nummer vornimmt. Dazu wird die letzte/höchste Nummer gesucht und um 1 erhöht. Wie das im Detail aussieht, hängt aber davon ab, wie die Rechnungsnummer am Ende aufgebaut sein soll. Soll sie nur aus einer bei 1 beginnenden laufenden Nummer bestehen, soll das aktuelle Jahr und/oder eine Buchstabenkombination wie "RE" vorangestellt werden? Da gibt es ja die unterschiedlichsten Wünsche und Möglichkeiten.
-
Hey, vielen dank für die schnelle Antwort. Jetzt ist die Frage woher bekomme ich so ein Script? ich hab es leider wirklich nicht mit "programmieren". Falls sich jemand finder der so etwas gerne macht und mir helfen möchte, hätte ich die Rechnungsnummer gerne in einem 1/Jahr format.
-
Hallo Tom
In der Reference Datenbank im Team 'Webinar DE 2020' findest du unter Parxisbeispiele eine Beschreibung mit Erklärung wie man eine laufende Nummer bei einem neuen Datensatz erzeugt. Der ScriptCode muss dementsprechend auf deine Bedürfnisse angepasst werden.
Einfach mal ins kalte Wasser springen und rumprobieren. Es ist kein Hexenwerk und wenn du an einer Stelle nicht weiter weist einfach im Forum fragen. -
Hi Tom, "1/Jahr-Format" heißt Jahreszahl plus laufende Nummer? Zum Beispiel so: "2020-023"? Okay, nehmen wir das mal als Basis und weiterhin an, die betreffende Tabelle hieße 'Rechnungen' und das (Text-) Feld 'RechnungsNr'. Dann könnte der Code dafür so aussehen:
let AktJahr := text(year(today()));
let LastNr := last((select Rechnungen where substr(RechnungsNr, 0, 4) = AktJahr).substr(RechnungsNr, 5, 3))
RechnungsNr := AktJahr + "-" + format(number(LastNr) + 1, "000")
Diese drei Zeilen kann man wie gesagt automatisch bei jedem Anlegen eines neuen Datensatzes ausführen lassen, in dem man sie Trigger unter "Bei neuem Datensatz folgendes Skript ausführen" hinterlegt. Wenn man die Rechnungsnummer erst später generieren will, dann kann man den Code statt dessen auch auf eine Schaltfläche legen. In diesem Fall wäre auch noch eine vorhergehende Abfrage möglich ("Wollen Sie wirklich ...").
Es sind natürlich noch viele Varianten denkbar, aber man muss den Code eben immer dem genauen Aufbau der Nummer anpassen.
-
Ach, Uwe. Da telefoniert man mal kurz, und schon war wieder einer schneller ... ;)
-
Hallo Uwe, ich habe es jetzt wie folgt probiert.
if not 'Rechnungsnummer' then
let y := year(Rechnungsdatum);
let m := month(Rechnungsdatum);
let d := day(Rechnungsdatum);
let c := cnt(select Rechnungen where year(Rechnungsdatum) = y and month(Rechnungsdatum) = m);
'Rechnungsnummer' := y + format(m, "00") + format(d, "00") + format(c, "00")
else
void
leider sagt er mir jetzt: Die Tabellenspalte ist kein einfaches Datenfeld: Rechnungsnummer in Zeile 11, Spalte 20.
was genau versteht man unter "einfaches Datenfeld" ?
-
Oh danke Copy, habe deine Antwort leider erst jetzt gesehen. Ichh probiere mich einmal schnell mit deinem Code aus.
-
Soo, das Werk ist mit vollbracht. Es funktioniert genau wie ich es mir vorgestellt habe. Vielen herzlichen Dank euch beiden für eure Mühen und die Ausdauer mit mir als Laien. Grooooßes Danke :)
-
Content aside
- vor 4 JahrenZuletzt aktiv
- 9Antworten
- 745Ansichten