Im numerischen Index freie Werte finden

Zugriff, Engines, Konvertierung. Von ADS über DBF bis zu SQL.

Moderator: Moderatoren

ramses
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2513
Registriert: Mi, 28. Jul 2010 17:16
Hat sich bedankt: 12 Mal
Danksagung erhalten: 77 Mal

Re: Im numerischen Index freie Werte finden

Beitrag von ramses »

Hallo Marcus

das beschriebene Problem war in Deutschland als die "Datenträgerüberlassung" eingeführt wurde.
Die Deutschen Finanzbeamten haben die "Zufallsnummern" nach dem beschriebenen Muster dann aktzeptiert und so läuft es bis heute.
Es ist ja auch Datenschutz dass er Empfänger nicht nachvollziehen kann wieviele Rechnungen/Offerten/Lieferscheine usw. in einem Betrieb geschrieben werden.......
Valar Morghulis

Gruss Carlo
Benutzeravatar
Marcus Herz
1000 working lines a day
1000 working lines a day
Beiträge: 851
Registriert: Mo, 16. Jan 2006 8:13
Wohnort: Allgäu
Hat sich bedankt: 39 Mal
Danksagung erhalten: 192 Mal
Kontaktdaten:

Re: Im numerischen Index freie Werte finden

Beitrag von Marcus Herz »

r- wie ich weiter oben geschrieben habe -
da hab ich wohl Einträge übersehen, kommt, weil man immer auf dem Letzten landet und nicht konsequent noch oben liest....
Gruß Marcus

Erkenne, was du findest, dann weißt du, wonach du gesucht hast
Benutzeravatar
nightcrawler
1000 working lines a day
1000 working lines a day
Beiträge: 650
Registriert: Di, 24. Apr 2012 16:33
Wohnort: 72184 Weitingen
Hat sich bedankt: 3 Mal
Danksagung erhalten: 96 Mal
Kontaktdaten:

Re: Im numerischen Index freie Werte finden

Beitrag von nightcrawler »

Werner_Bayern hat geschrieben: Mo, 07. Jun 2021 12:40 Nein, alter Code mit dbf.
Hast recht ... hab mich auch durch das SQL blenden lassen;)
Aber Du kannst DBF mit ADS auch über SQL ansprechen (im lokalen Modus ohne Server, wenn die entsprechenden Lizenzbedingungen eingehalten werden).
--
Joachim
Joachim Dürr Softwareengineering
https://www.jd-engineering.de
Benutzeravatar
Werner_Bayern
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2120
Registriert: Sa, 30. Jan 2010 22:58
Wohnort: Niederbayern
Hat sich bedankt: 29 Mal
Danksagung erhalten: 70 Mal

Re: Im numerischen Index freie Werte finden

Beitrag von Werner_Bayern »

Gibs auf Joachim, Du verkaufst uns hier keinen ADS für diese Funktionalität :)

Ein schönes Wochenende!
es grüßt

Werner

<when the music is over, turn off the lights!>
georg
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2823
Registriert: Fr, 08. Feb 2008 21:29
Hat sich bedankt: 95 Mal
Danksagung erhalten: 13 Mal

Re: Im numerischen Index freie Werte finden

Beitrag von georg »

Hallo, Werner -


ich ziehe meinen Vorschlag mit Universal SQL zurück. Ich habe das aus Interesse mal probiert, aber Universal SQL scheitert noch an dem nested SELECT.
Liebe Grüsse aus der Eifel,

Georg S. Lorrig
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.
Benutzeravatar
Werner_Bayern
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2120
Registriert: Sa, 30. Jan 2010 22:58
Wohnort: Niederbayern
Hat sich bedankt: 29 Mal
Danksagung erhalten: 70 Mal

Re: Im numerischen Index freie Werte finden

Beitrag von Werner_Bayern »

Servus Georg,

danke für die Info.
es grüßt

Werner

<when the music is over, turn off the lights!>
Dieter
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 237
Registriert: Do, 14. Aug 2008 14:59
Wohnort: Straelen
Hat sich bedankt: 2 Mal
Danksagung erhalten: 3 Mal

Re: Im numerischen Index freie Werte finden

Beitrag von Dieter »

Hallo Werner,

gehe ich richtig in der Annahme, dass die meisten der ungültigen (stornierten) Datensätze dadurch entstehen, dass vor der eigentlichen Dateneingabe ein Datensatz durch DBAppend() angelegt wird und der User, aus welchen Gründen auch immer, die Dateneingabe abbricht?
Hier wäre es natürlich hilfreich, wenn ein Datensatz mit einer eindeutigen Beleg-Nummer erst dann erzeugt wird, wenn der User die Dateneingabe abgeschlossen hat und das Speichern des Datensatzes selbst anfordert. Sonstige unberechtigte Belege (z. B. abgelehnte oder falsch ausgestellte Rechnungen) sollten meiner Meinung nach niemals gelöscht, sondern nach der Erfassung entsprechend gekennzeichnet und dokumentiert werden.
Fazit: Das Append vor der Dateneingabe und das Löschen von existierenden Datensätzen sollte strikt vermieden werden. Dann erhält man automatisch lückenlose Nummernkreise.
Viele Grüße

Dieter

Was man nicht versteht, besitzt man nicht.
Benutzeravatar
Werner_Bayern
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2120
Registriert: Sa, 30. Jan 2010 22:58
Wohnort: Niederbayern
Hat sich bedankt: 29 Mal
Danksagung erhalten: 70 Mal

Re: Im numerischen Index freie Werte finden

Beitrag von Werner_Bayern »

Servus Dieter,

richtig, aber: Nur so ist sichergestellt, dass im Netzwerk (und auch lokal - Thread) keine Nummer doppelt vergeben wird.
es grüßt

Werner

<when the music is over, turn off the lights!>
Dieter
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 237
Registriert: Do, 14. Aug 2008 14:59
Wohnort: Straelen
Hat sich bedankt: 2 Mal
Danksagung erhalten: 3 Mal

Re: Im numerischen Index freie Werte finden

Beitrag von Dieter »

Hallo Werner,

ich löse das n+1-Problem (ohne doppelte ID-Vergabe) mit Hilfe einer einer zentralen DBF, die ich nPeins.dbf genannt habe und die bei jedem Programmstart im Shared-Modus geöffnet wird. Jede DBF, die eine fortlaufende numerische ID verwaltet, hat hier einen eigenen Datensatz. Eine Applikation, die die nächst höhere ID für eine bestimmte DBF anfordert, muss zuerst den zugehörigen Datensatz in der nPeins.dbf sperren, um ein DBAppend() ausführen zu können. Das Positionieren auf den Record-Datensatz der nPeins.dbf geschieht sequentiell und ist somit unabhängig von einem Index. Die Sperrzeit ist in der Regel nur ein Bruchteil einer Sekunde, da nur gesperrt wird, wenn der User den Speicherbutton oder die Speicherfunktionstaste drückt.
Im jahrelangen Einsatz auf Terminalservern mit bis zu 40 gleichzeitigen Userzugriffen, wobei mehrere Personen gleichzeitig neue Daten erfassen, kam es bis jetzt zu keiner doppelten ID.
Bei älteren Programmen, die DBAppend() vor der Dateneingabe ausführen, habe ich die verworfenen IDs (vom User abgebrochene Datenerfassung) ebenfalls in einer zentralen DBF gespeichert und wieder zur Verfügung gestellt (wie von Georg hier vorgeschlagen). Das neue Verfahren ist meiner Meinung nach zu bevorzugen, da dadurch extrem kurze Sperrzeiten resultieren. Man muss aber sein gesamtes Datenhandling darauf aurichten. Die Eingabewerte liegen in den XbParts und werden erst am Ende der Erfassung gespeichert und bekommen dann erst die automatisch erzeugte ID.
Viele Grüße

Dieter

Was man nicht versteht, besitzt man nicht.
Antworten