Supportnet / Forum / Datenbanken
2 Tabellen vergleichen lassen?
Frage
Wie kann ich 2 Tabellen automatisch vergleichen lassen, und mir dann die Unterschiede vielleicht via Bericht ausgeben lassen? Gibts da eine Möglichkeit?? Danke, Michael
Antwort 1 von Teddy7
schau mal hier:
http://www.donkarl.com/
FAQ 3.16
Gruß
Teddy
http://www.donkarl.com/
FAQ 3.16
Gruß
Teddy
Antwort 2 von gresti
Hallo Michael,
schau dir doch mal das Programm DiffDoc] an.
Gruß
gresti
schau dir doch mal das Programm DiffDoc] an.
Zitat:
Sie brauchen schnelle und exakte Dokumentvergleiche? Jetzt können Sie das haben! 'Diff Doc' ist ein leistungsfähiges und doch leicht anzuwendendes Dienstprogramm, mit dem Dokumente und Verzeichnisse verglichen und in Form gebracht werden können. Verwenden Sie es, um MS Word / Excel, PDF, RTF, Text, HTML oder Wordperfect Dateien zu vergleichen.
Sie brauchen schnelle und exakte Dokumentvergleiche? Jetzt können Sie das haben! 'Diff Doc' ist ein leistungsfähiges und doch leicht anzuwendendes Dienstprogramm, mit dem Dokumente und Verzeichnisse verglichen und in Form gebracht werden können. Verwenden Sie es, um MS Word / Excel, PDF, RTF, Text, HTML oder Wordperfect Dateien zu vergleichen.
Gruß
gresti
Antwort 3 von gresti
Antwort 4 von JohnnyLoser
Hi Michael,
als allererstes wäre es wichtig zu wissen, ob die Tabellenstruktur der beiden zu vergleichenden Tabellen identisch ist. Anzahl Felder, Feldnamen, Feldtypen, Feldeigenschaften.
Dann stellt sich die Frage, was eigentlich verglichen werden soll:
Existiert ein "Schlüssel" aus Tabelle1 auch in Tabelle2?
...oder umgekehrt?
Ist der Wert in Feld2 Tabelle2 gleich dem Wert in Feld2 Tabelle1?
Gibt es in Tabelle1 Felder, die in Tabelle2 nicht existieren?
...oder umgekehrt?
Don Karl hilft Dir, Datensätze zu identifizieren, die in einer Tabelle nicht vorhanden sind, er gibt Dir allerdings keine Information über unterschiedliche Werte.
Vorausgesetzt, die Tabellenstruktur ist identisch, die Datensätze haben einen Schlüssel (eindeutige ID, wie z.B. Kundennummer, Seriennummer, etc.) und sind in allen beiden Tabellen vorhanden.
Weiterhin vorausgesetzt, daß der Vergleich einmalig stattfinden soll, würde ich mir eine Abfrage aufbauen, in der beide Tabellen über den Schlüssel verknüpft sind. Danach würde ich für jedes Feld einen Ausdruck erstellen, wie z.B.
Wenn(Tabelle1.Feld2 = Tabelle2.Feld2; True; False)
usw...
Das ganze in eine neue Tabelle erstellt und entsprechend gefiltert, siehst Du wo es Unterschiede gibt.
Der Spaß hört allerdings da auf, wo die Anzahl der Felder zu hoch wird.
Sollte die Prüfung regelmäßig stattfinden, solltest Du Dir entweder eine Prozedur schreiben (alles ist möglich!) oder vielleicht über ein neues Konzept Deiner Datenbank nachdenken.
Was ist das Ziel?
Willst Du nur wissen, wo Unterschiede sind?
Willst Du einen automatischen Abgleich fahren? (Replikation?!?)
Gib doch mal ein paar mehr Infos, dann können wir Dir bestimmt helfen.
Gruß
Johnny
als allererstes wäre es wichtig zu wissen, ob die Tabellenstruktur der beiden zu vergleichenden Tabellen identisch ist. Anzahl Felder, Feldnamen, Feldtypen, Feldeigenschaften.
Dann stellt sich die Frage, was eigentlich verglichen werden soll:
Existiert ein "Schlüssel" aus Tabelle1 auch in Tabelle2?
...oder umgekehrt?
Ist der Wert in Feld2 Tabelle2 gleich dem Wert in Feld2 Tabelle1?
Gibt es in Tabelle1 Felder, die in Tabelle2 nicht existieren?
...oder umgekehrt?
Don Karl hilft Dir, Datensätze zu identifizieren, die in einer Tabelle nicht vorhanden sind, er gibt Dir allerdings keine Information über unterschiedliche Werte.
Vorausgesetzt, die Tabellenstruktur ist identisch, die Datensätze haben einen Schlüssel (eindeutige ID, wie z.B. Kundennummer, Seriennummer, etc.) und sind in allen beiden Tabellen vorhanden.
Weiterhin vorausgesetzt, daß der Vergleich einmalig stattfinden soll, würde ich mir eine Abfrage aufbauen, in der beide Tabellen über den Schlüssel verknüpft sind. Danach würde ich für jedes Feld einen Ausdruck erstellen, wie z.B.
Wenn(Tabelle1.Feld2 = Tabelle2.Feld2; True; False)
usw...
Das ganze in eine neue Tabelle erstellt und entsprechend gefiltert, siehst Du wo es Unterschiede gibt.
Der Spaß hört allerdings da auf, wo die Anzahl der Felder zu hoch wird.
Sollte die Prüfung regelmäßig stattfinden, solltest Du Dir entweder eine Prozedur schreiben (alles ist möglich!) oder vielleicht über ein neues Konzept Deiner Datenbank nachdenken.
Was ist das Ziel?
Willst Du nur wissen, wo Unterschiede sind?
Willst Du einen automatischen Abgleich fahren? (Replikation?!?)
Gib doch mal ein paar mehr Infos, dann können wir Dir bestimmt helfen.
Gruß
Johnny
Antwort 5 von Michael (MST1981)
Hi Johnny!
Danke für deine sehr ausführliche Beschreibung.
Bei meiner Datenbank geht es um eine Mitgliederverwaltung von bis zu 1000 Daten.
Tabelle 1 und 2 sind vom Aufbau her identisch.
Tabelle 1 – dort wurden bisher alle Namen und sonst wichtige Daten eingetragen.
Tabelle 2 sollte nur eine Kopie von der ersten Tabelle sein.
Normale Benutzer sollten dann über ein Formular Änderungen in Tabelle 1 vornehmen können, anschließend möchte ich dann sehen welche Änderungen vorgenommen wurden und bei welchem Datensatz.
Ich hoffe du verstehst meine Erklärung.
Vielleicht gibt es ja eine andere Möglichkeit und ich muss nicht 2 gleiche Tabellen erstellen. Die zweite ist aber auch zur Sicherheit, wenn zB Daten gelöscht werden.
Ich hätte es gerne wenn dies automatisch kontrolliert werden würde, und dann zB via Bericht ausgedruckt werden kann – wo Änderungen vorgenommen wurden.
LG Michael
Danke für deine sehr ausführliche Beschreibung.
Bei meiner Datenbank geht es um eine Mitgliederverwaltung von bis zu 1000 Daten.
Tabelle 1 und 2 sind vom Aufbau her identisch.
Tabelle 1 – dort wurden bisher alle Namen und sonst wichtige Daten eingetragen.
Tabelle 2 sollte nur eine Kopie von der ersten Tabelle sein.
Normale Benutzer sollten dann über ein Formular Änderungen in Tabelle 1 vornehmen können, anschließend möchte ich dann sehen welche Änderungen vorgenommen wurden und bei welchem Datensatz.
Ich hoffe du verstehst meine Erklärung.
Vielleicht gibt es ja eine andere Möglichkeit und ich muss nicht 2 gleiche Tabellen erstellen. Die zweite ist aber auch zur Sicherheit, wenn zB Daten gelöscht werden.
Ich hätte es gerne wenn dies automatisch kontrolliert werden würde, und dann zB via Bericht ausgedruckt werden kann – wo Änderungen vorgenommen wurden.
LG Michael
Antwort 6 von Teddy7
Hallo Michael !
Dann nützt Dir im Laufe der Zeit die zweite Tabelle relativ wenig, weil Du dann beim Vergleich immer alle Abweichungen seit Arbeitsbeginn bekommst.
Wird ein bereits geänderter Satz nochmals geändert bekommst Du das nicht mit.
Sinnvoller wäre es hier eine LOG-Tabelle zu führen, in der nur bei Datenänderung ein Satz hinzugefügt wird.
Das ist einfach zu handhaben, wenn man das Formular nicht (wie üblich) mit gebundenen Feldern führt(da wird jede Datenänderung sofort gespeichert und Du bekommst Löschungen nicht mit).
Statt dessen hat man in der Form nur ungebundene Felder, die beim Anzeigen über VBA-Befehle gefüllt werden.
Zusätzlich gibt es einen Button "speichern" und einen Button "löschen".
Auch diese Aktionen werden über VBA-Befehle abgebildet und dabei kann man sehr einfach den alten und den neuen Datensatz in die Log-Datei schreiben.
Wenn man es will kann man dieses Logging sogar auf Feldebene betreiben indem man jeweils Schlüssel, Feldnamen, AlterWert und NeuerWert speichert.
Gruß
Teddy
Dann nützt Dir im Laufe der Zeit die zweite Tabelle relativ wenig, weil Du dann beim Vergleich immer alle Abweichungen seit Arbeitsbeginn bekommst.
Wird ein bereits geänderter Satz nochmals geändert bekommst Du das nicht mit.
Sinnvoller wäre es hier eine LOG-Tabelle zu führen, in der nur bei Datenänderung ein Satz hinzugefügt wird.
Das ist einfach zu handhaben, wenn man das Formular nicht (wie üblich) mit gebundenen Feldern führt(da wird jede Datenänderung sofort gespeichert und Du bekommst Löschungen nicht mit).
Statt dessen hat man in der Form nur ungebundene Felder, die beim Anzeigen über VBA-Befehle gefüllt werden.
Zusätzlich gibt es einen Button "speichern" und einen Button "löschen".
Auch diese Aktionen werden über VBA-Befehle abgebildet und dabei kann man sehr einfach den alten und den neuen Datensatz in die Log-Datei schreiben.
Wenn man es will kann man dieses Logging sogar auf Feldebene betreiben indem man jeweils Schlüssel, Feldnamen, AlterWert und NeuerWert speichert.
Gruß
Teddy
Antwort 7 von mst1981
danke für die antwort
nur leider kenne ich mich halt so nicht so gut beim access aus, müsste das alles erst probieren
und zum früheren
ich schau mir ja immer an was geändert wurde, und dann überschreibe ich die alte tabelle mit den neuen
verstehst was ich mein??
nur leider kenne ich mich halt so nicht so gut beim access aus, müsste das alles erst probieren
und zum früheren
ich schau mir ja immer an was geändert wurde, und dann überschreibe ich die alte tabelle mit den neuen
verstehst was ich mein??
Antwort 8 von Teddy7
Also eher Datenverarbeitung zu Fuß *g*
Solltest Du es Dir anders überlegen und Hilfe beim Programmieren brauchen weißt Du ja, wo Du "geholfen wirst".
Gruß
Teddy
Solltest Du es Dir anders überlegen und Hilfe beim Programmieren brauchen weißt Du ja, wo Du "geholfen wirst".
Gruß
Teddy

