Alleen nieuwe records toevoegen via een toevoegquery

Status
Niet open voor verdere reacties.

Snitsig20

Gebruiker
Lid geworden
23 okt 2006
Berichten
14
Ik heb een toevoegquery gemaakt en die ziet er als volgt uit:
INSERT INTO [tabUITLENING - GESCHIEDENIS]
SELECT tabUITLENING.*, *
FROM tabUITLENING;
Bij het uitvoeren het uitvoeren van de query krijg ik volgend scherm:
toevoerquery.jpg

Na JA drukken heeft de toevoegquery zijn taak uitgevoerd. Ik vermoed dat de melding er komt omdat record uit tabUITLENING reeds voorkomen in tabUITLENING - GESCHIEDENIS. Hoe kan ik deze melding voorkomen en/of uitschakelenen?
 
Met onderstaande regels erbij te zetten zou het moeten lukken
Code:
DoCmd.SetWarnings False 'aanzetten om crashes te vermijden
DoCmd.RunSQL "INSERT INTO [tabUITLENING - GESCHIEDENIS]
SELECT tabUITLENING.*, *
FROM tabUITLENING;"
DoCmd.SetWarnings True 'afzetten om fouten op te vangen

Groetjes
Dolfke
 
Dit lijkt mij niet te lukken. Hoe en waar moet ik deze zaken in voeren?
Kan je het niet oplossen met een NOT IN-instructie?
 
Als het mogelijk is , probeer anders even een voorbeeld file te uploaden.
gewinzipt.

Gegroet
 
Hallo Snitsig,

Deze foutmelding krijg je omdat de record reeds in je tabel aanwezig zijn
bij je append query moet je de not exists funktie toevoegen .

veranderen je append query in volgende
Code:
INSERT INTO tabUITLENING-GESCHIEDENIS
SELECT tabUITLENING.*, *
FROM tabUITLENING
WHERE (((Exists (Select * From tabUitlening-Geschiedenis Where TabUitlening-Geschiedenis.UitleningID = tabUitlening.UitleningID and TabUitlening-Geschiedenis.UitleningDatum = tabUitlening.UitleningDatum))=False));

Om code nu te laten uitvoeren kan je volgende code gebruiken
Code:
DoCmd.Setwarnings False
DoCmd.Openquery "Qry Onthouden"
DoCmd.Setwarnings True

Groetjes
Dolfke
 
Laatst bewerkt:
Hartelijk dank voor de reactie! Ik kreeg nog een aantal syntax-fouten, maar uiteindelijk lukte het met dit:

WHERE (((Exists (SELECT * FROM tabUITLENINGGESCHIEDENIS WHERE tabUITLENINGGESCHIEDENIS.UitleningID = tabUITLENING.UitleningID AND tabUITLENINGGESCHIEDENIS.UitleningDatum = tabUITLENING.UitleningDatum))=FALSE));

Blijkbaar kan SQL niet overweg met spaties in tabelnamen.
Alvast bedankt,
Rudy
 
Laatst bewerkt:
Hallo Rudy,

Blij dat het gelukt is :)

Spaties kan je beter altijd vermijden , niet alleen in tabelnamen maar ook in de controls op je form

Enkel nog ff op opgelost zetten

Groetjes
Dolfke
 
Laatst bewerkt:
Blijkbaar kan SQL niet overweg met spaties in tabelnamen.
Spaties kunnen wel, maar dan moet je er [ en ] omheen zetten, dus bijvoorbeeld [Column 1]. Veiliger is inderdaad spaties vermijden of underscores vermijden. En gereserveerde namen. Ik heb eens bij een tabel in SQL server een veld gehad met de naam Password. Dan krijg je dus de meest vreemde foutmeldingen. Referenen naar [Password] was de oplossing...
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan