Twee Access tabellen samenvoegen

Status
Niet open voor verdere reacties.

reneemettrie

Terugkerende gebruiker
Lid geworden
1 aug 2006
Berichten
1.233
Ik heb een Access DB met hierin een ledentabel. Hierin zitten leden van club A en club B.

Velden: ID, club, naam, adres,....
A1 -A -Jan- Antwerpen
B1- B- Els -Gent
B2- B- Chris- Brussel

Ik voer hier de leden van club A in.


Iemand anders vult op een kopie van de database de leden van club B in. Kunnen nieuwe leden zijn of wijzigingen in de bestaande.
B1-B-Els-Gent (ongewijzigd)
B2-B-Chris-Dendermonde (verhuisd)
B3-Jo-Ukkel (nieuw lid)


Op een bepaald moment moeten de tabel van Club B worden samengevoegd met de originele tabel.
Hoe doe ik dat?

Een append query gaat niet omdat je dan dubbele records zou maken (id is ook sleutelveld).

Bedoeling is dat aan de basistabel de nieuwe leden van club B (Jo uit Ukkel) worden toegevoegd, en de wijzigingen voor de bestaande leden (Chris is verhuisd) worden doorgevoerd.

Mensen die geen lid meer zijn worden niet verwijderd.
 
Om de aanpassingen door te voeren denk ik een oplossing te hebben via een update query
update.JPGupdate.JPG

En met een criterium de nieuwe records toevoegen via append query?

Of is er een elegantere methode?
 
Je hebt volgens mij 2 opties: a) persoon in db B is nieuw en moet dus worden toegevoegd en b) Persoon in db B bestaat in A en is gewijzigd. In het eerste geval moet je een toevoegquery gebruiken, en in het tweede geval een Bijwerkquery.
Een Toevoegquery kan, als je er niks aan doet, dubbele personen toevoegen en dat wil je uiteraard niet. Je moet dus de dubbele records wegfilteren uit de tabel met nieuwe personen. Dat doe je met een criterium:
Code:
Not In (SELECT persoonID FROM tPersonen)
In dit geval heb ik een tabel met te importeren personen (Import) die moeten worden toegevoegd aan de tabel tPersonen. Het ID veld in de tabel Import filter ik dan op de tabel tPersonen door de PersoonID uit te filteren. Resultaat: je kunt de query zo vaak uitvoeren als je wilt, zodra een persoon is toegevoegd staat hij niet meer in de lijst. Een tweede keer zal het resultaat dus altijd leeg zijn. Tot de volgende import tabel klaar staat.
De Update query heb je volgens mij wel ongeveer zoals het moet :).
 
Bedankt voor het criterium! Ik dacht al aan een lookup maar dit is veel eenvoudiger.
Eigenlijk is het criterium niet echt nodig, door het sleutelveld weigert Access sowieso duplicaten te maken. Maar jouw oplossing is wel eleganter :)
 
Even voor het beeld: op het moment dat je in 2 databases een identieke tabel maakt, moet je nooit een autonummer in beide databases gebruiken. Heel simpel: als je in dbA een klant toevoegt, en in dbB doet iemand anders dat ook, dan krijgt de (identieke) klant alleen hetzelfde nummer als de db's altijd identiek zijn. Zodra je in één van de db's een record per abuis aanmaakt en weggooit, klopt je nummering al niet meer. Ik gebruik dus nooit autonummers in dit soort gevallen, maar altijd eigen gegenereerde nummers.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan