Insert of update afhankelijk op record al bestaat

Status
Niet open voor verdere reacties.

mvdkooij

Gebruiker
Lid geworden
30 mrt 2007
Berichten
52
Hallo allemaal,

Ik heb 2 tabellen. Tabel A waarin per dag 1400 records ingelezen worden via een CSV bestand (deze tabel wordt elke 8 uur leeggemaakt en opnieuw ingelezen door een nieuw CSV bestand). Uit tabel A exporteer ik data (met een filter) naar Tabel B (INSERT INTO). Soms staat er ook al data in tabel B die enkel geupdate moet worden en daarvoor gebruik ik UPDATE. In tabel B kan ook handmatig data geplaatst worden.
Dat lukt allemaal nog wel.
Maar waar ik tegenaan loop is dat als een record in tabel B al bestaat en ik INSERT INTO van A naar B gebruik ik dubbele data krijg die ik natuurlijk niet wil. Echter kom ik er niet uit hoe ik dit nu moet oplossen.
Wat ik al heb is onderstaande, maar ik krijg niet verzonnen hoe ik die check moet maken per record of deze al bestaat of niet. Kunnen jullie me helpen?

Code:
IF een record al bestaat dan
strSql = "UPDATE tabel_B, tabel_A SET veld2=veld2, " _
& "WHERE (((tabel_B.[veld1])=[tabel_A]![veld1]))"
CurrentDb.Execute strSql

ELSE
strSql6 = "INSERT INTO tabel_B ([veld1],[veld2]) SELECT [veld1], [veld2] FROM [tabel_A]"

En om nog verder te gaan. Als een record in tabel_B wel bestaat, maar uiteindelijk in tabel_A niet meer dan moet deze verwijderd worden in tabel B.
 
Ik doe dat zelf altijd met een extra criterium op de toevoegquery. Daarbij filter je de tabel met de nieuwe records op de records die niet in de doeltabel zitten. Zo'n criterium ziet er dan zo uit:
Code:
WHERE (KlantID Not In (SELECT [KlantNummer] FROM tKlanten))
Enige voorwaarde hierbij: KlantID/Klantnummer is uniek. Maar je kunt ook een combinatie van velden maken die uniek is.
Iets vergelijkbaars doe je (maar dan op gelijkheid, dus je kunt de tabellen ook gewoon aan elkaar koppelen) bij de bijwerkquery. En iets vergelijkbaars doe je met de verwijderquery.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan