Of je records kunt toevoegen of verwijderen m.b.v. een query is afhankelijk van de basisvelden die je selecteert, als je de query opbouwt uit meerdere tabellen. Bij een query op basis van één tabel zal het meestal wel kunnen, tenzij je bijvoorbeeld de knop Totalen hebt aangezet om te groeperen en totalen te berekenen.
Als je relaties legt tussen tabellen doe je dat om gegevens uit de ene tabel te koppelen met gegevens uit een andere tabel.
Je vraagt bijvoorbeeld adresgegevens op uit de tabel Klanten om ze te koppelen aan de tabel Orders, om een nette factuur te kunnen maken.
Er vanuitgaande in dit voorbeeld, dat het KlantID veld uniek is, en dus je sleutelveld, zul je dit veld opslaan in de tabel Orders, want je wilt uiteraard vastleggen welke klant welke order plaatst. Normaliter zul je niet alle adresgegevens bij elke order overnieuw willen intypen; dat is veel werk dat je dubbel doet, en je vergroot de kans op fouten.
Je hebt dus in de tabel Klanten een KlantID, en in de tabel Orders een veld KlantID.
Tot zover zal het wel duidelijk zijn, hoop ik.
Nu dan de query. Je hebt dus een query gemaakt met de tabel Klanten en Orders als basis. Je hebt het veld KlantID uit Klanten netjes gekoppeld aan het veld KlantID uit Orders. Uit de tabel Orders selecteer je alle ordergegevens, en uit de tabel Klanten alle klantgegevens. Welk veld KlantID zet je in de query? Je hebt er namelijk twee! En het antwoord hangt af van het doel waarvoor je de query wilt gebruiken.
Om orders toe te kunnen voegen, moeten alle verplichte velden in de tabel orders worden ingevuld. KlantID is er daar ook één van. Je pakt dus het veld KlantID uit de tabel orders.
Wat gebeurt er nu als je het veld KlantID uit de tabel Klanten gebruikt? Als je een record wilt toevoegen m.b.v. de query, zullen alle gegevens uit de query worden opgeslagen in de onderliggende tabellen. Haal je het KlantID uit de tabel Klanten, dan zal bij opslaan dus geprobeerd worden om het veld KlantID toe te voegen aan de tabel Klanten. Dat zal normaliter niet lukken, omdat ten eerste het veld KlantID een sleutelveld zal zijn, en dus uniek. Je mag het KlantID er dus niet nog een keer in mogen zetten. Verder zullen, als je een nieuwe klant toevoegt, ook andere gegevens zoals adresgegevens ingevuld moeten worden. En als laatste aspect: in de tabel orders ontbreekt een KlantID, als je een record zou toevoegen aan orders.
Om al deze redenen, en waarschijnlijk nog wel een paar andere, is de query, als hij op deze manier wordt gemaakt, niet geschikt om records toe te voegen of te verwijderen. Bij verwijderen zou in dit geval een Klantrecord worden weggegooid, wat uiteraard nooit de bedoeling zal zijn!
Samenvattend: om een query te gebruiken om records toe te voegen of te verwijderen, moet je uitgaan van één tabel waarin de gegevens worden opgeslagen of verwijderd; je mag wel gegegevens uit andere tabellen weergeven in de query, maar dat mogen nooit sleutelvelden zijn.
Een heel verhaal, maar ik hoop dat je hier weer verder mee kan!
Michel