AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Lücken in Zahlenfolgen erkennen?
Thema durchsuchen
Ansicht
Themen-Optionen

Lücken in Zahlenfolgen erkennen?

Ein Thema von NoGAD · begonnen am 5. Mai 2022 · letzter Beitrag vom 6. Mai 2022
Antwort Antwort
Benutzerbild von NoGAD
NoGAD

Registriert seit: 31. Jan 2006
Ort: Weimar
327 Beiträge
 
Delphi 10.4 Sydney
 
#1

Lücken in Zahlenfolgen erkennen?

  Alt 5. Mai 2022, 22:05
Datenbank: ABSDatabase • Version: 7.93 • Zugriff über: ABSQuery
Hallo,

ich verzweifle gerade an einer wahrscheinlich einfachen Lösung für die Erkennung von Lücken in Zahlenfolgen in einer Datenbank.

Wenn ich aus einer Tabelle Einträge lösche, werden vergebene Kundennummern frei. Ohne nun sämtliche Einträge zu durchlaufen - gibt es eine Möglichkeit diese Lücken zu erkennen, um die Kundennummer neu zu vergeben?

LG Mathias
Mathias
Ich vergesse einfach zu viel.
  Mit Zitat antworten Zitat
Benutzerbild von blawen
blawen

Registriert seit: 30. Nov 2003
Ort: Luterbach (CH)
654 Beiträge
 
Delphi 12 Athens
 
#2

AW: Lücken in Zahlenfolgen erkennen?

  Alt 5. Mai 2022, 22:44
Normalerweise werden Datensätze in der Datenbank nicht gelöscht, sondern als gelöscht markiert.
Ebenso sollte die Kundennummer nicht "mehrfach" vergeben werden können - schliesslich wird diese doch mit irgendwelchen Buchungen oder sonstigen Datensätzen verknüpft sein.
Roland
  Mit Zitat antworten Zitat
Benutzerbild von Jasocul
Jasocul

Registriert seit: 22. Sep 2004
Ort: Delmenhorst
1.338 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Lücken in Zahlenfolgen erkennen?

  Alt 6. Mai 2022, 06:10
@blawen:
Nach Ablauf der gesetzlichen Aufbewahrungszeiten darf man das löschen. In manchen Fällen muss man das sogar danach löschen (siehe DSGVO).

@NoGAD:
Mir ist keine Möglichkeit bekannt, solche Lücken direkt zu finden, außer spezielle Funktionen der Datenbank, um gelöschte Datensätze zu selektieren. Wie blawen schon richtig schrieb, werden die in der Regel nicht wirklich gelöscht. Aber soweit ich weiß manche Datenbanken überschreiben diese Bereiche wieder. Somit ist das auch kein sicherer Weg, alle Lücken zu finden.
Wenn du wirklich so etwas benötigst, solltest du einen Trigger auf der DB nutzen, der im Falle einer Löschung die wieder nutzbare Kundennummer in einer Tabelle speichert. Die erneute Nutzung erfordert dann aber auch eine Löschung dieser Nummer aus dieser Tabelle.
Peter
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.355 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Lücken in Zahlenfolgen erkennen?

  Alt 6. Mai 2022, 06:41
Du könntest die gelöschten Datensätze nicht wirklich löschen, sondern nur bis auf die Kundennummer leeren und als gelöscht markieren. Dann kannst du ganz einfach die niedrigste dieser so markierten freien Kundennummern ermitteln und wiederverwenden, wenn du einen neuen Kunden anlegst.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Jumpy

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.733 Beiträge
 
Delphi 6 Enterprise
 
#5

AW: Lücken in Zahlenfolgen erkennen?

  Alt 6. Mai 2022, 08:32
Auch wenn alles, was meine Vorredner geraten haben stimmt, kann man zur eigentlichen Fragestellung folgendes SQL versuchen:

SQL-Code:
Select Min(T.Kundennummer)+1 as LeereNummer From Tabelle T
Where (Select Kundennummer From Tabelle Where Kundennummer=T.Kundennummer+1) IS NULL
SQL-Code:
Select Min(T.Kundennummer)+1 as LeereNummer From Tabelle T
Where Not Exists (Select Kundennummer From Tabelle Where Kundennummer=T.Kundennummer+1)
SQL-Code:
Select Min(T.Kundennummer)+1 as LeereNummer From Tabelle T
Left Join Tabelle T2 on Kundennummer=T.Kundennummer+1
Where T2.Kundennummer is Null
Ralph
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.166 Beiträge
 
Delphi 12 Athens
 
#6

AW: Lücken in Zahlenfolgen erkennen?

  Alt 6. Mai 2022, 10:44
Wenn man die Datensätze sortiert, dann lässt sich leicht prüfen, ob vorheriger/nachfolgender Datensatz mehr als 1 entfernt ist.


Alternativ Min und Max nehmen, damit eine Serie (quasi Temptable mit allen möglichen Werten) generieren und dann mit den eigentlichen Datensätzen ein Outer-Join, bzw. der Left-Loin mit IsNull, wo alles drin ist, was in den eigentlichen Datensätzen nicht vorhanden ist (quasi ie Lücken).
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.009 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#7

AW: Lücken in Zahlenfolgen erkennen?

  Alt 6. Mai 2022, 11:50
Ich persönlich würde ja einmal benutzte Kundennummern nicht wieder vergeben. Ist der Nummernkreis so klein, dass das notwendig ist?
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
Rollo62

Registriert seit: 15. Mär 2007
3.916 Beiträge
 
Delphi 12 Athens
 
#8

AW: Lücken in Zahlenfolgen erkennen?

  Alt 6. Mai 2022, 12:20
Ich persönlich würde ja einmal benutzte Kundennummern nicht wieder vergeben. Ist der Nummernkreis so klein, dass das notwendig ist?
Exakt.
Stell Dir vor ein alter Kunde ruft bei der Hotline an und gibt die alte Kundennummer an.
Wer weiss was da heutzutage für (Regress- und Datenschutz-)Probleme bei Euch daraus entstehen können.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:28 Uhr.
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