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
Announcement
Collapse
No announcement yet.
Abgleich von zwei Kundentabellen und Anzeige der geänderten Daten des Kunden
Collapse
X
-
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.
-
Originally posted by Ralf Jansen View PostFalls 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:
-
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)
Leave a comment:
-
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:
-
Originally posted by melih79 View PostWeil ich nicht weiß, wie ich das in Access umsetzten soll
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:
-
ich habe auch schon überlegt den Abgleich in Excel vorzunehmen
Das macht keinen Sinn
Leave a comment:
-
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:
-
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:
-
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:
-
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 PostAber letztlich ist das Konzept aus der Kategorie Major Fail.
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:
-
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:
Leave a comment: