none
kundennummer in sql datenbank änder RRS feed

  • Frage

  • Hallo habe folgendes Problem:

    Habe eine Datenbank mit Kunden. Für die Kunden ist eine Kunden Nummer vergeben. Diese steht in mehreren Tabellen. Die Kunde Nummer ist fünfstellig und es werden jetzt achtstellen benötigt.  Ich suche jetzt nach einer Möglichkeit die kundennummern in allen Tabellen zu ersetzten. Es handelt sich um etwa 17000 Kunden.

    Dienstag, 3. Januar 2012 11:58

Alle Antworten

  • Hi,

    UPDATE <Tabelle1> SET <Spalte> = <NeuerWert> WHERE <Spalte> = <AlterWert>
    UPDATE <Tabelle2> SET <Spalte> = <NeuerWert> WHERE <Spalte> = <AlterWert>
    UPDATE <Tabelle3> SET <Spalte> = <NeuerWert> WHERE <Spalte> = <AlterWert>
    ...

    Im Ernst: Wie werden die Kundennummern aktualisiert? Ganz neue Nummern? Voranstellen von 000? ...?

    Ist die Kundennummer der Primärschlüssel einer oder mehrerer dieser Tabellen? Bestehen Beziehungen zu anderen Tabellen aufgrund der Kundennummer?

     


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community
    Dienstag, 3. Januar 2012 12:14
    Moderator
  • Danke erst mal für die schnelle Antwort es handelt sich um eine Kunden Datenbank in „sage„ (ähnlich SAP) vor 9 Jahren wurden die kundennummern als 5 stellig definiert. Leider reichen die stellen bei den jetzigen stand nicht mehr aus. Die Kunden sind mit Käufen zum Teil über mehrere Jahre verknüpft.  Kunden Nummer hat die form 57123 die neue soll  z.B. 57000123 werden die Anzahl der stellen kann ich direkt in der Software ändern. Von z. b. 5 auf 8 die Software setzt 3 nullen nach. Leider funktionieren dann die Statistiken nicht mehr da z. b Käufe mit der alten Kunden Nummer verknüpft sind…. Die Kundennummer steht in mehr als 50 Tabellen die miteinander vertrickert sind. Vielen Dank für dieHilfe

    viele grüße Holger

    Dienstag, 3. Januar 2012 13:04
  • Hi,

     

    dann wird dir nichts anderes übrig bleiben, als in den 50 anderen Tabellen die Kundennummer manuell zu ändern. Alternativ kannst du eine neue Spalte erstellen, in der die alte Kundennummer (und die neue Nr. bei neuen Kunden) steht und die Reports dementsprechend anpassen.

    Ansonsten kannst du noch prüfen ob es eine interne Kundennummer gibt, die nicht geändert wird und die Reports dann anpassen.

     

    Grüße

    Oliver

    Dienstag, 3. Januar 2012 13:13
  • Ich hatte gehofft über eine Art suchen und ersetzten die kundennummern über die ganze Datenbank aus zu tauschen .z. b. ersetze 57123 mit 57000123 usw. Eine Liste der alten Kundennummern ist vorhanden ein manueller Austausch von 17000 kundennummern über 50 Tabellen ist leider nicht möglich

    Viele grüße Holger

    Dienstag, 3. Januar 2012 13:24
  • Hi,

     

    standardmäßig ist so eine Funktion nicht vorhanden. Allerdings kannst du dir diese selbst schreiben.

    Erstelle eine Stored Procedure, die eine alte und eine neue Kundennummer entgegennimmt. Innerhalb der Procedur machst du das Update auf alle Tabellen (Dies muss natürlich einmalig getippt werden ;-))

    Dann erstellst du eine Tabelle, in der alle alten Kundennummern und die neuen Kundennummern geschreiben werden.

    Anschließend nutzt du entweder einen Cursor der die Prozedur für alle Kundennummern in der Tabelle ausführt oder du erstellst dir ein Skript, welches einmalig alle Aufrufe der Prozedur enthält.

    Ich hoffe ich konnte mich halbwegs verständlich ausdrücken ;-)

    Viele Grüße

    Oliver

    Dienstag, 3. Januar 2012 13:34
  • Hallo Holger,

    Du solltest Dich mit dem Softwareanbieter in Verbindung setzen, der euch damals die Software verkauft hat,
    bzw. dir einen von Sage vermitteln lassen, sollte ihr keinen Kontakt mehr haben.
    Wenn es sich um eine Standard-Software wie Sage (evtl. ehedem KHK) handelt, so gibt es dafür oft
    Zusatzmodule, die solche Aufgaben erledigen können - was allerdings nicht umsonst sein dürfte.

    Eine selbstgestrickte Lösung ist zwar möglich, aber auch fehleranfällig.

    Dazu müsstest Du eine Übersetzungtabelle alte -> neue Nummer erstellen.
    Wobei man dabei auch inaktive Kunden nicht vergessen sollte, sofern sie noch im System schlummern,
    deswegen sollte man zunächst alle alten Kundennummer aus allen Tabellen extrahieren.

    Das spätere Aktualisieren kann über eine Reihe von Abfragen laufen.
    Wobei es sich empfiehlt dies auf einer Datenkopie durchzuspielen,
    denn erfahrungsgemäß taucht dabei das eine oder andere Problem auf.

    Von Aktionen wie Suchen / Ersetzen oder Umstellen einzelner Nummern sollte man absehen,
    da dadurch womöglich Fakten geschaffen werden, die sich nachher als ungünstig heraus stellen.

    Gruß Elmar

    Dienstag, 3. Januar 2012 16:30
  • handelt sich um eine Kunden Datenbank in „sage


    Hallo Holger,

    ist es zufällig die "Sage Office Line"?

    Die Datenbank enthält fast 700 Tabellen und wenn ich nach den häufigsten Begriffen suche, komme ich auf ca. 60 Felder, die Kundennummern enthalten können. "Häufigste Begriffe" weil die Felder für Kundennummer keinen einheitlichen Namen haben, mal ist es KtoKo (Rewe), mal A0Empfaenger, mal Kunde usw. Foreign Key Constraint gibt es keine, die einen zuverlässigen Hinweis geben, wo die Kontokorrente referenziert sind. Dazu gibt es noch Tabellen wie KHKLogbuch mit "Universalfelder", die neben anderen Daten auch teilweise Kundennummern enthalten können.

    Im Tool "Sage Administrator" gibt es die Möglichkeit, den Nummernbereich für Sachkonten zu Ändern, das Tool geht dann alle Tabellen durch und ändert die gespeicherten Sachkontennummern; für Kunden- und Lieferanten-Nummern gibt es das nicht. Ich nehme mal an, weil Sage das zu "haarig" wäre; mir ehrlich gesagt auch.

    Wurde das eigentlich auch mit der Buchhaltung und Steuerberater abgeklärt? Kundennummern sind auf Fakturabelegen zwar keine Pflichtangabe; aber sie werden im Standard mit gedruckt und nach Ändern der Kundennummern würden sich die Angaben in den Belegen auch ändern.
    Ausserdem müsstest Du das (evtl. bereits journalisierte) Buchungsjournal ändern.

    Ich würde eher so vorgehen, das ich die alten Kundennummern so belassen würde und nur neue Kundennummern nach dem neue Format anlegen.

    Übrigens, die Statistiktabellen sind das allerkleinste Problem; in Sage gibt es im Regiezentrum unter "Administration" die Funktion zum "Statistik reorganisieren", die löschte alle Werte aus den Statistiktabellen und baut sie dann mit den Summen der Bewegungsdaten wieder neu auf.


    Olaf Helper
    * cogito ergo sum * errare humanum est * quote erat demonstrandum *
    Wenn ich denke, ist das ein Fehler und das beweise ich täglich
    Blog Xing
    Dienstag, 3. Januar 2012 17:06
  • Vielen Dank für die schnellen Antworten. Es handelt sich um sage Office Line. Uns wäre es wichtig gewesen den die alten berichte weiternutzen zu können. Leider haben wir keine Zugriffeinzige mehr wenn wir die Kundennummern ändern. Die einzige Möglichkeit die wir sehen ist einen n euen Mandanten anzulegen mit neuen Kundennummern.  Und zu wechseln wenn alte Daten gebraucht werden. Ist leider sehr Umständlich. Nochmals vielen Dank für die Mühe.

     

    Mittwoch, 4. Januar 2012 08:20
  • Ansonsten kann ich Dir auch nur raten, Dich an Deinen Sage Fachhändler oder an den Sage Professional Service zu wenden, um Dir bei der Umsetzung des Updates zu helfen.

     


    Olaf Helper
    * cogito ergo sum * errare humanum est * quote erat demonstrandum *
    Wenn ich denke, ist das ein Fehler und das beweise ich täglich
    Blog Xing
    Freitag, 6. Januar 2012 17:28
  • Hi,
    Leider haben wir keine Zugriffeinzige mehr wenn wir die Kundennummern ändern. Die einzige Möglichkeit die wir sehen ist einen n euen Mandanten anzulegen mit neuen Kundennummern.

    sowas ist nicht eben mal so schnell, schnell gemacht. Da verdienen sich manche Dienstleister eine silberne bis goldene Nase damit. Ich stimme Olaf zu: Frag beim Hersteller der Software nach. Ggfs. gibt es dort bereits ein Tool, welches die euch geben können. Ansonsten wäre es aber dennoch am sinnvollsten, den Hersteller das machen/entwickeln zu lassen.

     


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community
    Freitag, 6. Januar 2012 19:04
    Moderator
  • Hallo Holger,

    wir stehen jetzt vor dem gleichen Problem.

    Kannst du mir bitte kurz sagen wie Ihr euer Problem lösen konntet und was Ihr gemacht habt ?

    Vielen dank im vorraus

    Harald

    Sonntag, 3. Juni 2012 05:38