Delphi-PRAXiS
Seite 2 von 2     12   

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)

BiBi 13. Jan 2004 20:08

Re: Rechnungsnummer generieren?
 
merlin17,

ist richtig, doch habe ich das Prog nur für mich und als Einzelplatzlösung erstellt.

Trotzdem Danke für den Tip.

Gruß

schniede 14. Jan 2004 17:40

Re: Rechnungsnummer generieren?
 
Hy !!

Ich danke euch allen,war unterwegs und werd später genau lesen.

Auf alle Fälle viel guter Ideen.

thx schniede

DelphiDeveloper 2. Feb 2004 22:44

Re: Rechnungsnummer generieren?
 
Ich nehme mal an,
das deine Rechnungsnummern folgende Kriterien erfüllen müssen:

1. fortlaufend
2. lückenlos
3. unique im laufenden jahr
4. evtl will der anwender bei jahreswechsel wieder von n loslegen
5. der anwender will noch nicht verschickte rechnungen einfach verwerfen können
und nicht sofort eine storno oder gutschrift erstellen

ich würde folgenden ansatz verfolgen

a) rechnr niemals PK
b) rechnr über generator holen
c) wenn generierte rechnr geloescht wird -> nummer zurück in einen nummernpool

zu b) bevor der generator erhoeht wird, erstmal schauen ob noch was im nummernpool liegt, hier muss man sich dann im mehrplatzsytem was einfallen lassen, das nicht etwa 2 user zur selben zeit sich im pool bedienen können. Kriegt man aber über pessimistisches Locking hin (zumindest mit IBObjects).
Eleganterweise wird das nummern holen dann mit einer SP gelöst.
Bleibt das chronologische Problem. rechnr versus Rechdatum. (nur über Organisation in
dem Betrieb möglich)

wer Interesse an dem geschilderten ansatz hat, dem kann ich eine ausführlichere Interbase/IBO Lösung zukommen lassen.

mfg
delphideveloper

jlanger 3. Feb 2004 15:58

Re: Rechnungsnummer generieren?
 
Zitat:

Zitat von BiBi
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.

Warum der ganze Quatsch? Nimm doch ein Autoinc-Feld oder ein Generator-Feld, das zählt automatisch hoch, den Startwert kannst du auch setzen. Und schon wars das.
Und das Argument mit dem RE davor ist doch völliger Käse. Warum soll das RE in der Datenbank stehen? Wozu braucht du es? Auf der Rechnung? Dann lass es beim Schreiben der Rechnung davor schreiben (berechnetes Feld). Selbst auf irgendwelchen Masken macht man das so. Schliesslich hat das "RE" KEINERLEI Infogehalt in der Datenbank. Oder benutzt du für Währungen auch ein Stringfeld, damit du das € (oder früher DM) dahinter schreiben kannst? In der Datenbank ist bei einem Währungsfeld nur die Zahl gespeichert, nicht aber das €.


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:41 Uhr.
Seite 2 von 2     12   

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