Einzelnen Beitrag anzeigen

DelphiDeveloper

Registriert seit: 9. Apr 2003
Ort: Köln
256 Beiträge
 
Delphi XE2 Enterprise
 
#9

Re: [Interbase] Generatorwert zurücksetzen?

  Alt 10. Feb 2005, 00:45
Zitat:
Ja genau das meinte ich für DatensatzID gamOnNewRecord und für RechnungsNr etc. gamOnPost. Die Details werden dann mit der DatensatzID verknüpft.
Die RechNr bei OnPost zu generieren minimiert zwar das Problem aber eine lückenlose Sequenz von RechNr kriegt man dann auch noch nicht hin. Hat man irrtümich gepostet dann ist die Rechnr schon generiert und das löschen der Rechnung bringt "Löscher" in der Sequenz.

Ich würde mir für eindeutige Sequenzen sowas bauen:

Eine Tabelle mit einem Nummernkreis hier nur eine Zeile
ID NEXTNUMBER
1 4711

Eine Tabelle Nummernpool mit verwaisten Rechnr


Das ganze arbeitet dann wie folgt

hier als Pseudoalgo

exklusiver Zugriff auf Tabelle Nummernkreis anfordern (Lock)
wenn gesperrt warte...
schaue im Numernpool ob noch verwaiste Nr vorliegen
wenn ja hole satz aus nummernpool und loesch ihn dort -> fertig
wenn nix im Nummernpool
hole NEXTNumber aus Nummernkreis, incrementiere um 1 NextNumber in Nummernkreis
exklusiver Zugriff auf Tabelle zureucksetzen (unlock).
  Mit Zitat antworten Zitat