Willkommen bei Entwickler-Forum.
Seite 1 von 2 1 2 LetzteLetzte
Ergebnis 1 bis 10 von 14
  1. #1
    Zaungast
    Registriert seit
    17.05.2011
    Beiträge
    34

    Standard 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

  2. #2
    Stammgast
    Registriert seit
    26.02.2003
    Beiträge
    4.859

    Standard

    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.

  3. #3
    Stammgast
    Registriert seit
    24.10.2011
    Beiträge
    1.366

    Standard

    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.


    Zitat Zitat von Ralf Jansen Beitrag anzeigen
    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.
    Gruß, defo

  4. #4
    Zaungast
    Registriert seit
    17.05.2011
    Beiträge
    34

    Standard

    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

  5. #5
    Forenheld
    Registriert seit
    26.02.2003
    Beiträge
    16.319

    Standard

    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.
    Christian

  6. #6
    Zaungast
    Registriert seit
    17.05.2011
    Beiträge
    34

    Standard

    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.

  7. #7
    Forenheld
    Registriert seit
    26.02.2003
    Beiträge
    16.319

    Standard

    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
    Christian

  8. #8
    Zaungast
    Registriert seit
    17.05.2011
    Beiträge
    34

    Standard

    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.
    Geändert von melih79 (27.04.2018 um 08:32 Uhr)

  9. #9
    Stammgast
    Registriert seit
    24.10.2011
    Beiträge
    1.366

    Standard

    Zitat Zitat von melih79 Beitrag anzeigen
    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:
    Code 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

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

  10. #10
    Zaungast
    Registriert seit
    17.05.2011
    Beiträge
    34

    Standard

    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 !!!

 

 
Seite 1 von 2 1 2 LetzteLetzte

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •