![]() |
Rechnungsnummer generieren?
Hallo!
Also ich such nen praktischen Weg ne Rechnungsnummer zu generieren (soll fortlaufend sein). Meine Überlegung.-- 9 stellige zahl die ersten beiden die Jahreszahl und den Rest von 0 aufwärtzzählen. Beispiel 04xxxxxxx . ich würde dann die letzten 7 stellen in einer INI speichern und je Rechnung um eins erhöhen und wieder neu speichern ,als letzte vergebene Nummer. So nun find ich das nicht gerade Elegant und denk, da gibt es doch bestimmt ne bessere Lösung. mfg schniede |
Re: Rechnungsnummer generieren?
Was könnte da eleganter sein?
Die einzigen Alternativen, die mir dazu einfallen, wäre, den Wert in der Registry zu speichern und evtl. noch ein alphanumerisches Zahlensystem zu verwenden (z.B. Hexadezimal). Durch letzteres hast du einen Grösseren Nummerierungsbereich mit der gleichen Anzahl Ziffern (in dem Fall statt 1 bis 9.999.999 ein Bereich von 1 bis 268.435.455 = FFFFFFF in Hex). |
Re: Rechnungsnummer generieren?
Danke scp !
Das mit den hex lass ich lieber, ca. 27000 verschiedene Nummern pro Tag im Jahr sollten reichen. geht ja 2005 mit 05xxxxxxx weiter :-) Registry , hm Vorteile?? Ini ist für mich leichter zu händeln. thx schniede |
Re: Rechnungsnummer generieren?
Moin Schniede.
Dann lass es doch bei der INI. Du musst wegen einem Wert nicht gleich was in die Registry schreiben. |
Re: Rechnungsnummer generieren?
hi,
ich würde die rechnungsnummer weder in ini-files noch in der registry speichern. was machst du wenn zwei user auf das programm zugreifen und beide gleichzeitig eine rechnung erfassen ? am besten in der datenbank (wird es ja bei einem rechnungsprogramm geben) speichern und hochzählen lassen (je nach datenbank gibt es ja verschiedenen möglichkeiten zur unterstützung, bei interbase/firebird generatoren, bei oracle sequenzen, bei m$ und paradox die AutoInc-felder, etc.) :wink: thomas |
Re: Rechnungsnummer generieren?
Du kannst alternativ auch einfach Jahr + Monat + Tag + anzahl Sekunden des aktuellen Tages nehmen. Das sind 5 Stellen von 0 bis 86400 pro Tag.
Macht z.B. 040112 33180 Und man kann anhand der Rechnungsnummer auch gleich das Datum nachvollziehen. |
Re: Rechnungsnummer generieren?
Hallo schniede,
am besten in der Tabelle nach der letzten Rechnung suchen. Tabelle.LAST Tabelle.RECHNUM := Tabelle.RECHNUM + 1 So habe ich es gemacht. Wenn du willst schicke ich Dir einen Auszug mit dem erhöhen der Rechnungsnummer. Gruß |
Re: Rechnungsnummer generieren?
Hallo nochmal,
habe auf die schnelle den Prog-Teil gefunden.
Delphi-Quellcode:
// Rechnungsnummer um 1 erhöhen
DataModule1.T_Rechnungen.Last; LetzteRechNummer := DataModule1.T_Rechnungen.FieldByName('Rechnungsnummer').AsString; iLetzteRechNummer := StrToInt(LetzteRechNummer); iNeueRechNummer := iLetzteRechNummer + 1; NeueRechNummer := IntToStr(iNeueRechNummer); Ich habe die Rechnungsnummer als String gespeichert, weil ich "RE" davor schreibe. Ich hoffe ich konnte Dir damit etwas helfen. Gruß [edit=Admin]Delphi-Tags eingefügt. Bitte künftig selber amchen. ;-) Mfg, Daniel[/edit] |
Re: Rechnungsnummer generieren?
Moin. moin,
da war doch noch das Finazamt. Die möchten ab diesem Jahr abfogende Rechnugnsnummern auch wenn verschedene Rechner an diesem Procedre beteiligt sind. Deshalb entscheide zunächst ob Du ein reines Einzelplatzsystem hast und es auch nicht auf mehrer Rechner erweitern möchtest. Einzelplatzsystem: :bouncing4: Hier geht das mit der Ini bestens Mehrplaztsystem :duck: Verwende einen Datenbankgenerator (Hansa hatte mal ein schönes Beispiel) Das hängt natürlich vom Datenbanksystem ab, welches Du verwendest. Grüße // Martin |
Re: Rechnungsnummer generieren?
BiBi,
Problem könnte bei deinem codeschnipsel nur sein, dass in einem netzwerk zwei user gleichezeitig eine rechnung holen und damit jeweils die gleiche iLetzteRechNummer erhalten.... wenn würde ich gleich nach dem holen der zahl ein update auf das datenfeld durchführen. vermindert die wahrscheinlich etwas.
Code:
gruss
iLetzteRechNummer := StrToInt(LetzteRechNummer);
iNeueRechNummer := inc(iLetzteRechNummer); executeQuery : "update t_rechnungen set Rechnungsnummer = INeueRechNummer where ...." NeueRechNummer := IntToStr(iNeueRechNummer); ...... :-) thomas |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:45 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz