Announcement

Collapse
No announcement yet.

Vergabe einer Kundennummer in einer Kundendatenbank

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Vergabe einer Kundennummer in einer Kundendatenbank

    Hallo,
    Ich benötige dringend Hilfe bei folgendem Problem:
    <b>[Delphi 4 Pro; Paradox Datenbank]</b>

    Ich führe eine Kundendatenbank in der zu jedem Kunden eine Kundennummer zugeordnet wird (1...oo). Ich dachte erst daran, das Problem mit einer AutoIncrementierung zu lösen. Dies funktioniert auch soweit ganz gut, doch wenn ein Kunde gelöscht wird, soll auch seine Kundennummer wieder frei werden und bei der nächsten Neuerfassung verwendet werden.
    Dies funktioniert jedoch nicht wenn ich wenn ich die Kundennummern automatisch also aufsteigend vergeben lasse.

    Ich dachte nun daran, eine Referenz Tabelle zu erstellen in der alle frei werdenden Kundennummern aufsteigend eingetragen werden. Wird nun ein neuer Kunde erfasst, so schaut das Programm in diese Tabelle und verwendet den erste Datensatz mit der "freien" Kundennummer. Diese wird dann bei der Kundenerfassung verwendet. Sind in der Referenztabelle keine Datensätze vorhanden, dann nimmt das Programm die (Anzahl der Kunden in der Kundendatenbank + 1) als neue Kundennummer. Bei dieser Methode wird die Kundennummer dann nicht automatisch vergeben.

    Diese Vorgehensweise erscheint mit jedoch sehr aufwendig und auch umständlich.

    Ich bin für jeden alternativen Vorschlag sehr dankbar.

    Danke

  • #2
    Hallo Stefan,

    Dein Ansatz ist gut und wird auch von professionellen Anwendungen so benutzt.
    Für die neue Kundennummer solltest du aber meiner Meinung nach nicht die Satzanzahl zählen, sondern select MAX(kundennummer) from kundentabelle verwenden (An Zugriff durch mehrere Benutzer denken: Sperren / Transaktion!!! ).

    Eine Alternative dazu sehe ich allerdings nicht.

    Gruß Kai

    Comment


    • #3
      Hallo!

      Ich würde keine Tabelle mit freien Kundennummern führen. Tritt bei der Verarbeitung ein Fehler auf, so ist eine Kundennummer für immer verloren oder sie wird als frei geführt, ist aber schon benuzt.
      Ich denke, daß bestimmt ein Index auf der Kundennummer vorhanden ist, wenn die Kundennummer nicht sogar der Primärschlüssel ist. Ich würde die Datensätze beginnend mit dem ersten Datensatz durchlaufen und dabei einen Zähler incrementieren. Erreichts Du die erste freie Nummer (Kundennummer > Zähler) so kannst Du diese als freie Kundennummer wählen. Bei einer Desktopdatenbank wie Paradox und nicht all zu großen Datenmengen ist das wohl erlaubt - glaube ich .

      Aber etwas anderes. Warum vergibst Du nicht immer eine neue Kundennummer. Werden denn alle Daten zu dieser Kundennummer gelöscht?
      Kann es nicht sein, daß Daten in Tabellen zuückbleiben z.B. Bestellungen, Rechnungen, Lieferscheine usw.?
      Wenn ja wäre das Ergebnis nicht so schön (Ein neuer Kunde erhält statt einem netten Begrüßungsbrief die dritte Mahnung ).

      mfg Thomas Sparenber

      Comment


      • #4
        Hi!

        Ich kann Thomas nur zustimmen.
        Das Recycling von Kundennummern gibt große Probleme bei größeren Datenmengen. Jeder Kunde (auch wenn er nicht mehr als "aktiv" geführt wird) kann sich ja auch mit einer neuen Anfrage im Bezug auf seine eigene Kundennummer (denkt er) wieder melden.
        In <b>keiner</b> Datenbank, die Personen verwaltet, die ich kenne, wird das so gemacht.

        Ich denke, der Grund dafür ist klar.

        cu
        Tim

        Comment

        Working...
        X