Supportnet Computer
Planet of Tech

Supportnet / Forum / Datenbanken

2 Tabellen vergleichen





Frage

Habe folgendes "Problem: 2 tabellen (identisch vom aufbau) müssen vergleichen werden (befinden sich in der gleichen datenbank). zB personalDat_original personalDat jetzt sollen diese beiden Tabellen auf unterschiede überprüft werden. Wenn ein Datensatz in einer Tabelle nicht vorkommt dann soll er erzeugt werden. Bei Unterschieden sollen diese in der personalDat geändert werden. gibt es für diese Anwendung fertigen code? Kann mir einer Tipps geben wie ich das sauber implementieren kann? Es handelt sich bei den tabellen um eine standard tabelle. 25 spalten und ~2000 datensätze. Möglich wäre auch einen neue, dritte tabelle aus den beide zu erzeugen die die Informationen von beiden enthät. Ich hoffe ihr könntmir helfen!!!! DAnke im voraus

Antwort 1 von Hinki27

Hi,

hast du einen eindeutigen Schlüssel in deinen Tabellen? Sonst wird es verdammt schwierig zu unterscheiden, ob sich eingeänderter Datensatz in der Tabelle befindet oder ob es ein neuer Datensatz ist.

Gruß
Ralf

Antwort 2 von VBA jünger

Ja hab ich.
Noch eine zusatzinfo: Die tabellen enthalten alle möglichen informationen über angestellte. Alle 2 Wochen kommtdie gleiche tabelle mit ein paar änderungen, diese sollen dann in der original tabelle upgedatet werden.

mfg vba jünger

Antwort 3 von Hinki27

Hallo,

hier ein Lösungsvorschlag:

INSERT-Statement für neue Datensätze
=================================
INSERT INTO T0002_Personaldat ( ID, A, B, C )
SELECT ID, A, B, C
FROM T0002_Personaldat_Orig
WHERE (((ID) Not In (Select ID FROM T0002_Personaldat)));

UPDATE-Statement für Änderungen (ich aktualisiere einfach alle)
=============================================
UPDATE T0002_Personaldat INNER JOIN T0002_Personaldat_Orig ON T0002_Personaldat.ID = T0002_Personaldat_Orig.ID SET T0002_Personaldat.A = [T0002_Personaldat_Orig].[A], T0002_Personaldat.B = [T0002_Personaldat_Orig].[B], T0002_Personaldat.C = [T0002_Personaldat_Orig].[C];

Du muss halt alle Attribute (bei mir A,B,C) entsprechend anpassen.

Das Ganze kannst du auch noch in eine Prozedur packen, in der die zwei Zeilen

docmd.runsql "UPDATE...."
docmd.runsql "INSERT...."

aufgenommen werden müssen.

Gruß
Ralf

Antwort 4 von VBA jünger

DANKE!
Genau so hab ich mir das vorgestellt! Muss nur noch auf meine 25 spalten um modeln dann funzt es ;)

mfg vba jünger