Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Rechnungsnummer generieren? (https://www.delphipraxis.net/14582-rechnungsnummer-generieren.html)

schniede 11. Jan 2004 21:25


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

scp 11. Jan 2004 22:02

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).

schniede 11. Jan 2004 22:13

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

Robert_G 11. Jan 2004 22:18

Re: Rechnungsnummer generieren?
 
Moin Schniede.
Dann lass es doch bei der INI. Du musst wegen einem Wert nicht gleich was in die Registry schreiben.

merlin17 12. Jan 2004 08:06

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

Phoenix 12. Jan 2004 08:12

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.

BiBi 13. Jan 2004 17:24

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ß

BiBi 13. Jan 2004 17:54

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]

mschaefer 13. Jan 2004 18:01

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

merlin17 13. Jan 2004 18:02

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:
iLetzteRechNummer := StrToInt(LetzteRechNummer);
iNeueRechNummer := inc(iLetzteRechNummer);
executeQuery : "update t_rechnungen set Rechnungsnummer = INeueRechNummer where ...."

NeueRechNummer := IntToStr(iNeueRechNummer);
......
gruss



:-) thomas


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:16 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz