Announcement

Collapse
No announcement yet.

Abgleich von zwei Kundentabellen und Anzeige der geänderten Daten des Kunden

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

  • Abgleich von zwei Kundentabellen und Anzeige der geänderten Daten des Kunden

    Hallo Zusammen,

    ich stehe vor einem blöden Problem und hoffe, dass mir jemand weiterhelfen kann. Ich habe in meiner Access Datenbank zwei Tabellen (identisch vom Aufbau= gleiche Spalten) mit Kundendaten. In der ersten Tabelle sind die Kundendaten vom letzten Monat. In der zweiten Tabelle sind die aktuellen Kundendaten. Das bedeutet, dass in der zweiten Tabelle eventuell neue Kunden hinzugefügt wurden, oder dass eventuell Änderungen an den bestehenden Kunden vorgenommen wurden (weil z.B. sich die Straße geändert hat).

    Ich brauche eine Abfrage oder sonst für eine Lösung, die mir zeigt: A) Bei welchem Kunden wurde eine Änderung vorgenommen B) Was wurde genau verändert - Wenn sich bei dem Kunden Herr Klein (Kunden_ID:30) nur die Strasse geändert hat, dann brauch ich eine Übersicht mit der Kunden_ID und die Angabe zur neuen Straße.

    Die Tabellen haben 30 Spalten ( Strasse, PLZ, TElefon, Email, Handy, ........)

    Könnt Ihr mir vielleicht da weiterhelfen?!
    Dickes Danke im Voraus.

    Viele Grüße,
    Melih

  • melih79
    replied
    Genau, durch diesen manuellen Aufwand, werden manche Änderungen übersehen, daher brauche ich explizit die Spalten die geändert wurden. Ich melde mich, sobald ich den SQL Befehl fertig habe.

    Leave a comment:


  • defo
    replied
    Originally posted by Ralf Jansen View Post
    Falls ich den Hinweis mit "Letzte Änderung"-Spalte verstanden habe sollte die where Bedingung weniger aufwendig sein. Ein vergleich von ID und "Letzte Änderung" sollte reichen um festzustellen ob sich ein Kunde überhaupt geändert hat.
    Ich hab es so verstanden, dass bei den vielen Spalten leicht übersehen wird (von Menschen), was sich überhaupt geändert hat. Es wird also einerseits abgefragt und andererseits explizit angezeigt. Kann er sich ja rausschnippel, was er braucht.

    Leave a comment:


  • Ralf Jansen
    replied
    Die OR Bedingungen in der Where Clause natürlich auch (oder ganz weglassen, dann gibt es Zeilen ohne Änderung auch aus)
    Jeder Kunde hat seine eindeutige Kunden_ID und jede Änderung wird in der Spalte "Letzte Änderung" Zeitlich erfasst (Datum &Uhrzeit)
    Falls ich den Hinweis mit "Letzte Änderung"-Spalte verstanden habe sollte die where Bedingung weniger aufwendig sein. Ein vergleich von ID und "Letzte Änderung" sollte reichen um festzustellen ob sich ein Kunde überhaupt geändert hat.

    Leave a comment:


  • defo
    replied
    Originally posted by melih79 View Post
    diese Case Funktion müsste ich für alle 40 Spalten machen.
    Die OR Bedingungen in der Where Clause natürlich auch (oder ganz weglassen, dann gibt es Zeilen ohne Änderung auch aus)

    Leave a comment:


  • melih79
    replied
    Verstehe, und diese Case Funktion müsste ich für alle 40 Spalten machen. Ich mach mich gleich an die Arbeit und gebe euch Bescheid. Vielen Dank !!!

    Leave a comment:


  • defo
    replied
    Originally posted by melih79 View Post
    Weil ich nicht weiß, wie ich das in Access umsetzten soll
    In Excel ist ein Vergleich natürlich bequem, etwas copy / paste, vergleichsformeln dazwischen, fertig.

    Per SQL müsste es ungefähr so laufen:
    [highlight=SQL]

    select cm.cust_id,
    cm.cust_createdate, cm.cust_changedate,
    cm.cust_company_name, cc.cust_company_name,
    case when cm.cust_company_name != cc.cust_company_name then 'Änderung' else 'identisch'
    end as cust_company_name_dif,
    cm.cust_name , cc.cust_name,
    case when cm.cust_name != cc.cust_name then 'Änderung' else 'identisch'
    end as cust_name_dif,
    cm.cust_firstname , cc.cust_firstname,
    case when cm.cust_firstname != cc.cust_firstname then 'Änderung' else 'identisch'
    end as cust_firstname_dif,
    cm.cust_status , cc.cust_status,
    case when cm.cust_status != cc.cust_status then 'Änderung' else 'identisch'
    end as cust_status_dif
    from customer_main cm
    join customer_change cc on cm.cust_no=cc.cust_no
    where cm.cust_company_name != cc.cust_company_name
    or cm.cust_name != cc.cust_name
    or cm.cust_firstname != cc.cust_firstname
    or cm.cust_status != cC.cust_status
    [/highlight]

    P.S.: Ist natürlich kein Access, muss man etwas umformulieren.

    Leave a comment:


  • melih79
    replied
    Weil ich nicht weiß, wie ich das in Access umsetzten soll
    Ich muss die geänderten Werte sehen und prüfen, bevor ich diese in die Tabelle einpflege.
    Zuletzt editiert von melih79; 27.04.2018, 08:32.

    Leave a comment:


  • Christian Marquardt
    replied
    ich habe auch schon überlegt den Abgleich in Excel vorzunehmen
    Warum in Gottes Namen nun in Excel und nicht alles in Access?
    Das macht keinen Sinn

    Leave a comment:


  • melih79
    replied
    Guten Morgen Christian,

    ich habe auch schon überlegt den Abgleich in Excel vorzunehmen und dann einfach die Änderungen händisch in der Access Datenbank zu machen. Der Grund weshalb wir es manuell machen ist, dass die Änderungen vorher geprüft werden von uns. Ob die Sinn machen.

    Leave a comment:


  • Christian Marquardt
    replied
    Wenn es in Access ist...warum schreibst du dazu dann nicht ein VBA-Programm, dass den Vergleich vornimmt und auch die Aktualisierung. Was nützt es zu wissen, was geändert wurde, um dann die Änderung händisch nachzuziehen.

    Leave a comment:


  • melih79
    replied
    Hallo Ralf, Hallo defo,

    ich habe die Aufgabe hier in der Firma erst neu übertragen bekommen und mir ist bewusst, dass es keine vernünftige Lösung ist. Es handelt sich hierbei tatsächlich um eine monatliche Aufgabe von der selben Kundengruppe. Jeder Kunde hat seine eindeutige Kunden_ID und jede Änderung wird in der Spalte "Letzte Änderung" Zeitlich erfasst (Datum &Uhrzeit).Es ist so, dass die Kundendaten aus dem Support mit einem Tool erfasst werden. Wir benötigen die Kundendaten auch in der Abteilung, aber können nicht auf die Daten dieses Tool zugreifen. Also erhalten wir Sie in Excel von der Support Abteilung. Meine Kollegin hat diese Access Datenbank erstellt und importiert die Daten in diese Access Datenbank. Aber eine bestimmte (KundenHaupttabelle)wird händisch aktuell gehalten. Da wird die Tabelle nicht einfach mit der aktuellen Import Datei überschrieben. Sondern wirklich jede Änderung in den Spalten wird per Hand abgeändert.

    Ich habe 2 Abfragen schon mal erstellt: 1) In der ersten werden mir alle neuen Einträge aufgelistet ( Einfach die Kunden ID neue Tabelle mit alter Tabelle verglichen) 2) IN der zweiten Abfrage habe ich alle geänderten Kunden aufgelistet (KundenID und Spalte "Letzte Änderung" verglichen). Somit weiß ich schon mal welche Kundendatensätze neu sind und welche geändert. Das Problem liegt in den veränderten Datensätze. Denn ein Datensatz hat ungelogen 40 Spalten, sodass es echt mühsam ist dann zu schauen WELCHE SPALTE denn überhaupt aktualisiert wurde ://// Und ich dachte mir, dass es eventuell eine Lösung dafür gibt, weil es wirklich super Zeitaufwendig ist.
    Was meint Ihr dazu?! Vielen Dank für Eure Unterstützung

    VG
    Melih

    Leave a comment:


  • defo
    replied
    Hat Deine Firma eine andere Firma gekauft und Du bist nun dafür zuständig, die Synergieeffekte zu implementieren!?

    Spaß beiseite:
    Es gibt zu 99,9% keine Situation, in der man eine solche Tabellenkonstellation einsetzen würde. Falls Du denkst, bei dir ist das anders, schreib bitte, warum.


    Originally posted by Ralf Jansen View Post
    Aber letztlich ist das Konzept aus der Kategorie Major Fail.
    Das sehe ich genau so, allerdings mit der Einschränkung, dass die beschriebene Situation vielleicht einmalig ist und nicht- das wäre der Fail- systematisch als Datenverarbeitungskonzept so implementiert ist. Gleiche Daten gehören in die gleiche Tabelle, hier in dem Fall wäre also ein Erstellungsdatum, ein Änderungsdatum und ein Kundenstatusfeld o.ä. angesagt, um innerhalb der Tabelle die gewünschte Differenzierung zu erreichen.

    Was ich nicht verstanden habe: Die Beschreibung klingt so, als wären zwar 2 Tabellen für 2 verschiedene Kuindengruppen vorhanden, aber eigentlich nicht sicher, das auch wirklich nur unterschiedliche Daten darin sind, also nur Neukunden bzw. geänderte Kunden.

    Was die Aufgabenstellung angeht:
    Das klingt etwas nach Kinderüberraschung, gleich 3 tolle Sachen auf einmal. Mit einer Abfrage kommt man da nicht hin.
    Als Devise könnte man (wie so oft) das Prinzip devide and conquer angeben. Zerlege die Aufgabe so oft und lange in Einzelschritte, bis diese mit einfachen Abfragen möglich sind.
    z.B.
    In Access gibt (oder gab- bin nicht auf dem Laufenden) es Dublettenabfragen Damit könnte. Damit könnte man eine Gruppe separieren, um sie letztlich aus der einen oder anderen Tabelle zu entfernen.
    Dann gibt es sowas wie "Kundennummer", normalerweise. damit würde man identische Kundensätze joinen und dann feldweise vergleichen.
    usw usw.

    Wie gesagt, das macht man vielleicht einmal mit einem System, zum Aufräumen oder als Migrationsschritt bei einer Zusammenführung. Man will das nicht als monatliches, schmerzhaftes Ritual haben, auch nicht jährlich (am besten zwischen Weihnachten und Silvester).

    Wenn Du also darüber nachdenkst, wie Du diese Aufgabe gehoben bekommst, denk gleich mit darüber nach, wie Du sie garantiert nur einmal bewältigen musst.

    Leave a comment:


  • Ralf Jansen
    replied
    Da könnte man vielleicht was extrem aufwendiges zaubern. Aber letztlich ist das Konzept aus der Kategorie Major Fail. Änder das fast egal wie aufwendig das ist. Sonst werden die Schmerzen deswegen in Zukunft nur größer.

    Leave a comment:

Working...
X