Ontstaan van dubbele waarde

Status
Niet open voor verdere reacties.

Auke van Wieren

Gebruiker
Lid geworden
9 jun 2024
Berichten
31
Goedendag.

Mijn naam is Auke en ben bezig met een database voor mijn modelspoormaterieel.

Probleem: Krijg een melding ”De opgegeven wijzigen zijn niet aangebrachte de tabel omdat daardoor dubbel waarden ontstaan in de in de index, primaire sleutel of relatie.”

Uitleg wat ik tot nu toe heb gedaan.

Ik heb 3 tabellen gemaakt, T_Materieel, T_Verzekering/financieel en T_Echt_bedrijf. Deze 3 tabellen heb ik met een Query, Q_Materieel_Query aan elkaar gekoppeld met Outer Joins. Daarna heb ik met deze Query een formulier met drie tabbladen gemaakt, F_Materieel_Query. Daarnaast heb ik nog Tabellen gemaakt voor de keuzelijsten met invoervak voor diverse invoervelden. Op het formulier record-stuurknoppen geplaatst.

Ik voeg een nieuw record toe op het eerste tabblad, deze bewerk in het formulier dan ga ik naar het volgende tabblad met T_Verzekering/financieel, ook daar vul ik gegevens in en als ik deze wil opslaan, krijg ik de melding dat er duplicaten zijn. Ook zie ik nadat de record is opgeslagen (ik dacht in de aangemaakte Query) dat de gegevens van het tweede tabblad niet opgeslagen zijn in de Query of in de Tabel.

Voor mijn begrip: ik maak een nieuw record dmv de knop ”Toevoegen” op het formulier; wordt er dan in de Query een nieuw record aangemaakt of in de oorspronkelijke tabel(len)? Worden de gegevens die ik in het formulier toevoeg nu in de Query of direct in de tabel ingevoerd? Dit vraag ik omdat ik de ingevoerde gegevens op de ander twee tabbladen nergens in de Query of tabel zie verschijnen.

Of moet je op de andere tabbladen ook een nieuw record aanmaken voor de onderliggende tabel?


Ik kan mijn Database eventueel opsturen.

Groet Auke
 
Dat laatste zou ik zeker doen, dan kunnen mensen er naar kijken. Zelf kan ik pas volgende maand meekijken, dus met een beetje mazzel is je probleem dan al opgelost :). Wél kan ik alvast wat opmerkingen plaatsen waar je wellicht wat aan hebt.
Belangrijkste punt: waarom deze opzet? Als ik je verhaal zo lees, is dit vragen om problemen. En die heb je dan ook :).

Dat begint al met je query. Waarom deze query gemaakt met Outer Joins? Waarom geen relaties gelegd? (Misschien wel, maar dat mis ik in het verhaal). Waarom, (volgens mij de boosdoener) deze query gebruikt voor een formulier?

Laat ik even voorop stellen dat ik niet veel snap van je tabellen. De tabel t_Materieel snap ik nog wel, maar t_Verzekering/Financieel? Geen idee wat je daar mee moet. En t_Echt_Bedrijf zegt mij al helemaal niets.
Maar laten we er even vanuit gaan dat de tabel t_Materiaal de ‘hoofdtabel’ is die je met een één-op-veel relatie (waar je dus niks over zegt) hebt gekoppeld aan de andere twee tabellen. Dan zou je je formulier moeten baseren op de tabel t_Materieel, en verder niks.

Op je formulier wil je ook de gegevens invullen van de andere twee tabellen, en dat kan prima als je dus de één-op-veel relaties correct (dus met Inner Join) hebt vastgelegd. Op je formulier kan je dan je tabbelement maken waarin je op het eerste tabblad de gegevens/velden zet uit de tabel t_Materieel die je wilt invullen. Op het tweede tabblad zet/sleep je dan de tabel t_Verzekering, waardoor je een gekoppeld doorlopend formulier krijgt, en op het derde tabblad doe je hetzelfde met de tabel t_Echt_Bedrijf. Deze twee tabellen worden dus automatisch gekoppeld op basis van de relaties.

Als je het zo maakt, zal je zien dat het systeem prima werkt, en je probleem dus weg is.
 
Aha. Materieel is inderdaad het hoofdtabel met honderden items daarin. In de Tabel T_Verzekering/financieel hou ik de aankoop en de huidige waarde bij van de locomotieven en ander wagons etc. (schaal 1:160 zgn N-spoor) Maar ik heb daar op dit moment nog niet alle gegevens van. In de Tabel Echt bedrijf vergelijk ik het model met de treinmaterieel met wat er werkelijk rijd of gereden heeft. Ook daar moet ik nog veel speurwerk voordoen. Zoals je merkt heb ik niet veel verstand van Access maar probeer er iets van te maken adh van wat ik op internet vindt en You-Tube filmpjes.
Ik heb ook relatie gelegd of waren die nadat ik een Query had gemaakt vanzelf ontstaan(?) dat weet ik niet meer want ik ben er een tijd geleden mee bezig geweest en pak het nu weer op. Dit heeft mij tot nu toe weken gekost. Maar goed het is en hobby zal ik maar zeggen. Ben man van 73 jaar die maar wat probeert. Ik ga een nieuwe opzet maken zoals jij beschrijft. Ik vergeet nu de Query's zat dus in een verkeerde richting te denken. Dus een gekoppeld doorlopend formulier.
Hoe kan ik mijn bestand naar jou sturen via onderstaande link kan dit alleen met foto en pdf zag ik?
De drie tabellen zijn een eigenlijk 1 op 1 relaties. De andere tabellen zijn 1 op meer. Als e het leuk vindt dan moet je naar onze website eens kijken dan zie je wat wij/ik maken. www.lahntalbahn.nl.
Groet Auke
 
Goedenavond OctaFish.
Allereerst nog bedankt voor de voorgaande reactie en het meedenken van mijn probleem.
Heb nu weer een ander probleem; als ik via Maken > Wizard Formulier wil gebruiken krijg ik een melding dat dit onderdeel is uitgeschakeld. Heb de aanwijzingen gevolgd en zie bij Opties dat er niets is uitgeschakeld. Office 365 opnieuw geinstalleerd maar krijg de zelfde melding.
Groet Auke
 
Blijf zoveel mogelijk van de wizards af want die zijn a) behoorlijk waardeloos en b) leer je daar niets van. Ontwerp dus zelf een formulier (kan redelijk semi-automatisch) en volg dan de aanwijzingen op die ik eerder heb aangegeven.

Relaties worden niet door queries gemaakt, maar maak je in het venster Relaties. Dus dat moet je zelf doen.

Databases kun je niet als database bestand posten, maar moet je eerst zippen. Daarbij mag de grootte niet boven de 2mB uitkomen.

Ik heb deze maand geen tijd om er naar te kijken, maar andere helpers wellicht wel. Anders moet je even geduld hebben 😊.
 
Hallo, 1 op 1 relaties hebben alleen zin als je meer dan 255 kolommen in een tabel hebt, wat in de meeste gevallen alleen gebeurt bij slechte ontwerpen, of voor beveiligingsredenen en ik denk niet dat dit hier het geval is.
Dus ik vermoed dat er nog wat sleutelwerk aan je data ontwerp is.
 
Knap dat je al 1-op-1 relaties ziet zonder dat je de db hebt.
 
Bericht #3:

...De drie tabellen zijn een eigenlijk 1 op 1 relaties....
 
Hoeft niet. Ergo: ik onthou mij van voorbarige conclusies tot ik de db heb gezien.
 
Goedenavond heren. Hierbij mijn aangepaste Database. Op basis van gekoppelde doorgaande formulieren. Dan meteen een probleem die ik jullie wil voorleggen: ik kan geen nieuwe records aanmaken wel in de tabel T-materieel zelf. In T-Verzekeringen/financieel zie ik wel bovenaan een nieuw record staan met Id van 0 (nul) bij een nieuw record toevoegen krijg je dan een duplicaat en dat kan niet in de sleutel. Zelfde probleem waar ik mee begon. Ik hoop dat jullie mijn kunnen helpen om een goed werkende database te krijgen, ik zal daar zeer dankbaar voor zijn.
Groet Auke
 
Een toevoeging: In het formulier F_Materieel zie onderaan dat er 544 records zijn maar in de T_Materieel zijn dat er 572. Hoe kan dit?
 
Ik zie geen bijlage.
 
… ik kan geen nieuwe records aanmaken wel in de tabel T-materieel zelf. In T-Verzekeringen/financieel zie ik wel bovenaan een nieuw record staan met Id van 0 (nul) bij een nieuw record toevoegen krijg je dan een duplicaat en dat kan niet in de sleutel.
E.e.a. is dus helemaal afhankelijk van hoe je de formulieren maakt; normaal gesproken is een formulier niks anders dan een ‘transparantje’ dat bovenop de tabel ligt: wat je in de tabel ziet (en kan), zie (en kan) je ook in het formulier. Als dat ánders is, dan zit er dus iets fout in het formulier. Idem dito voor je subformulier voor t_Verzekeringen. Als dat correct gekoppeld is, kun je prima records toevoegen in het subformulier. Lukt dat niet, dan zit ook daar een fout.

Ik hoop dat iemand er naar kijkt die wél naar de db kan kijken, want ik kan dat voorlopig dus niet.
 
Een zipfile die te groot is kun je op een aantal manieren ‘verhelpen’. Om te beginnen; de database kun je kleiner maken door de optie <Comprimeren en herstellen> te gebruiken. Dan wordt hij doorgaans een stuk kleiner. Ten tweede: om problemen op te lossen, hebben wij maar een paar records nodig. Genoeg om de problemen te constateren. Dus records verwijderen helpt ook. (Wel daarna weer Comprimeren en herstellen uitvoeren.)
Derde optie: deel de zipfile op in kleinere deel bestanden. Dat kan niet met WinZip, maar wel met bijvoorbeeld WinRar.
Laatste optie: zet de database op een FileShare zoals WeTransfer.
 
Ik heb een formulier met tabbladen gemaakt zoals je beschreef bij #2.
Er zit dus een fout ergens maar waar en hoe?
 
Er zitten veel foto's in. Kan ik de kolom met foto's uit de tabel verwijderen zonder nog een probleem te creëren?
 
Foto’s moet je nooit opslaan in de database. Daar wordt hij veel te groot van en comprimeren of zippen helpt dan helemaal niets, want er valt niks te verkleinen. Sla afbeeldingen dus buiten de database op.

Wellicht is het slim om de Access cursus die ik ooit voor helpmij heb geschreven eerst door te nemen; databases maken zonder basiskennis is als het uitvoeren van een open hart operatie met je ontbijt servies. Het starten (opensnijden) wil nog wel lukken, maar daarna komen de problemen 😊.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan