Foutmelding: "Kan geen record toevoegen of wijzigen omdat een gerelateerde record..."

Status
Niet open voor verdere reacties.

danielmolenaar

Gebruiker
Lid geworden
15 jun 2010
Berichten
18
Beste helpmij leden,
Ik zit nog steeds met een probleem. Ik zal hieronder, voor diegene die nog niet eerder mijn posts gelezen hebben, mijn situatie beschrijven.

Ik ben nu stage aan het lopen bij een klein bedrijf, en ik moet een compleet facturatie systeem opzetten. Dit doe ik door middel van Access 2007. Het is mij onderhand gelukt om Klanten toe te voegen, Producten toe te voegen en deze kan ik ook wijzigen. Nu komt het probleem bij het formulier en het rapport “Factuur”.
Ik heb een Formulier met daarin een Subformulier. Het Formulier is genaamd Factuur en het subformulier heet Factuurregels. In het formulier Factuur staat een knop voor het Afdrukvoorbeeld. Zodra ik deze knop wil gebruiken krijg ik de melding “Kan geen record toevoegen of wijzigen omdat een gerelateerde record vereist is uit de tabel Factuur”.

Ik weet niet waar dit aan kan liggen aangezien mijn kennis van access niet zo groot is. Ik heb al andere posts gelezen en las dat het misschien te maken had met de relaties tussen de tabellen. Ik heb hier een afbeelding van mijn relaties.

Ik hoop dat ik zo voldoende informatie heb gegeven voor diegene die mij zou willen helpen. Zo niet, laat het dan even weten, dan werk ik mijn post even bij.

Alvast bedankt!

Met vriendelijke groet,
Daniel
 
Hoi Daniel,
De relatie tussen Bedrijven en Factuur is niet correct; dat zou ook een één op veel relatie moeten zijn. Dat zou kunnen doordat je in Factuur bedrijven (niet) hebt staan die niet in Bedrijven zitten. Dus dat moet je in ieder geval nog even oplossen. Verder snap ik de één op één tussen Produkt en Produkten-Prijs ook niet helemaal; je hebt nu dus in totaal 3 velden met een prijs er in.... Ik kan me voorstellen dat je een produkt hebt dat door verschillende leveranciers wordt geleverd, waar dan ook verschillende inkoopprijzen aan hangen. Of dat je een historie wilt opbouwen over de prijzen zodat je prijsmutaties kunt vastleggen. In beide gevallen heb je een één-op-veel relatie nodig. Nu kun je per produkt maar één prijscombinatie (en datum) vastleggen.
Of met deze aanpassingen het formluier/rapport werkt is moeilijk te zeggen. Deze melding komt ook als je niet alle gegevens voor alle records hebt opgeslagen. Dus daar kun je ook nog naar kijken.
 
Beste michel,

Ik heb geprobeerd de relatie te leggen tussen Bedrijven en Factuur. Dit is helaas niet gelukt aangezien access mij de melding geef dat als ik de relatie probeer te leggen, het dan in strijd gaat met de regels voor referentiele integriteit. Ik heb gelezen dat de velden dan gelijk moeten zijn, alleen is het veld ID van Bedrijven een Autonummeringsveld (+ primaire sleutel) en het veld BedrijfID is omgetoverd tot een keuzelijst. (Nummeriek, geen sleutel)

Hoe krijg ik dan de relatie tot stand?

Met vriendelijke groet,
Daniel
 
Het veld BedrijfID mag je wel hebben omgebouwd tot een keuzelijst (zou ik zelf overigens niet gedaan hebben, maar dat is een ander verhaal) dat neemt niet weg dat je gewoon een getal opslaat, omdat het veld Numeriek is (lange integer, neem ik maar even aan). Dus de feitelijke gegevens zijn hetzelfde. Het probleem ligt in je tabel Facturen, waar je facturen hebt gemaakt zonder BedrijfsID. En dat mag niet, vandaar dat je geen Referentiële integriteit kunt afdwingen.
Als je een db ontwerpt is dat ook één van de eerste dingen die je dus instelt, want bij een lege tabel heb je dat probleem uiteraard niet, en kun je de relaties dus helemaal goed leggen. Daarna is het onmogelijk om een record op te slaan als het record in strijd gaat zijn met de Ref. Int. regel.
De oplossing is dus: ofwel de record die geen BedrijfID hebben weggooien, of een geldig BedrijfID invullen.
 
Oke, ik heb nu de records verwijderd (Systeem is nog niet in gebruik genomen, waren dus alleen nog maar testgegevens) en ik heb referentieële integriteit in kunnen schakelen. Ik krijg alleen nog steeds de melding "Kan geen record toevoegen of wijzigen omat een gerelateerde record vereist is in te tabel Factuur."

Wat je mij had uitgelegd over het verwijderen van die melding d.m.v. alle gegevens in te vullen voor elk veld, was mij niet helemaal duidelijk.
Deze melding komt ook als je niet alle gegevens voor alle records hebt opgeslagen. Dus daar kun je ook nog naar kijken.
Zou dit te maken hebben met bepaalde sleutelvelden die ik zo heb aangepast dat het desbetreffende veld in de tabel niet meer de record bron is?

Zou je dit misschien iets gedetailleerder uit willen leggen?

Alvast vriendelijk dank!

Met vriendelijke groet,
Daniel
 
Laatst bewerkt:
Als je een subtabel koppelt aan een hoofdtabel, en je gebruikt een sleutelveld uit de hoofdtabel in een query die als bron wordt gebruikt voor een subformulier, heb je een probleem, omdat de recordset van het subformulier niet meer bijgewerkt kan worden. Dat kan bij jou ook het geval zijn. Controleer dus ook nog of je in de basis van het subformulier in ieder geval alle velden uit de gekoppelde tabel hebt, en uit de tabel factuur alleen velden die geen sleutelveld zijn. Een sleutelveld mag je namelijk niet wijzigen.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan