Relatie probleem

Status
Niet open voor verdere reacties.

belois

Gebruiker
Lid geworden
1 jun 2009
Berichten
22
Neen, dit gaat niet over mijn vrouw.

Ik heb een simpel probleem maar kom zelfs met diverse beschrijvingen er niet uit.

Ik heb een tabel met klantgegevens.

Hierbij is een ID autonummering de primaire sleutel.

In de tabel staat:
ID
Code (uniek)
Naam
Adres
Postcode
Plaats


Nu wil ik een tweede tabel met collega's die helpen.
Id
Bedrijfscode (opzoek veld in tabel Klantgegevens)
Naam (moet automatisch worden ingevuld)
Adres(moet automatisch worden ingevuld)
Postcode(moet automatisch worden ingevuld)
Plaats(moet automatisch worden ingevuld)

Met andere woorden Als ik in de tabel collega's de bedrijfscode selecteer dan wil ik dat hij de juiste gegevens uit de tabel klantgegevens in de velden van de tabel van collega's invult.
 
Even voor het begrip: het veld Code uit de tabel klantgegevens komt overeen met het veld Bedrijfscode in tabel 2? En als je het veld Code uniek hebt, waarom gebruik je dat dan niet als sleutelveld, maar een autonummerveld ID?
Ik denk dat daar namelijk je probleem schuilt: als je gegevens uit tabel 1 wilt opvragen in tabel 2, dan moet je, zover was je al, velden aan elkaar koppelen. Dit zijn, logischerwijs, gegevensvelden die overeenkomen.
Je wilt dus, laat ik daar maar even van uit gaan, het veld Code dus opslaan in tabel 2 in het veld Bedrijfscode. Het veld Code moet dan de sleutel zijn. Het veld Bedrijfscode is dan geen sleutelveld, anders kan je maar één record opslaan per bedrijfscode. Je maakt dan m.b.v. het scherm Relaties een één op veel relatie tussen tabel 1 en tabel 2. Access zal gelijk de goede variant voorstellen, omdat Code immers een sleutelveld is, en Bedrijfscode niet.
ALs je het veld Code zelf vult, dan zou ik ook de optie <Referentiële integriteit afdwingen? aanzetten, en de optie <Gerelateerde velden trapsgewijs bijwerken> ook; hiermee bewerkstellig je dat een aanpassing van een code in tabel 1 automatisch in tabel 2 wordt doorgevoerd. Netjes, niet? De tweede optie aanzetten voor een autonummerveld kan overigens geen kwaad, maar doet niet zoveel, omdat je een autonummerveld toch niet kunt aanpassen.

Michel
 
Hallo Michel

Uiteraard is je oplossing perfect, maar het geeft mij niet het gewenste resultaat.

Als ik nu in het subformulier van collega de Code opzoek vult hij inderdaad de overige gegevens in maar als ik in het hoofdformulier naar een tweede record wandel dan blijft het subformulier op de keuze staan die ik had gemaakt.

Verder is het dan zo dat als ik terugwandel naar record 1 in het hoofdformulier dan zie ik daar niet de collega met adresgegevens die ik had gekozen.

Hoe kan ik dit anders oplossen?

Ik wil dus een tabel met klantgegevens zoals adres etc.

Ik wil een tabel met collega's, deze collega's zijn dus inderdaad dezelfde mensen uit de klantgegevens.

Als ik een code kies uit de klantgegevens, dan moet hij dus die adresgegevens gaan invullen in de tabel van collega's.

Op deze manier kan ik zien in het hoofdformulier welke collega mee is geweest.

Alvast bedankt voor de moeite.
 
Laatst bewerkt:
Heb je het subformulier correct gekoppeld aan het hoofdformulier? Normaal gesproken moeten de gegevens meelopen met de gegevens uit het hoofdformulier zoals je wilt; mag eigenlijk geen probleem zijn.

Michel
 
Hallo Michel

Ik heb volgens mij de juiste velden gekoppeld, namelijk Code in hofdform en Bedrijf_code in subformulier, echter als ik in het formulier terugwandel naar vorige record dan is het subform leeg?

Wat doet ik verkeerd...
 
Kun je een (al dan niet gestripte) versie met wat voorbeeldrecords neerzetten? Want als je de formulieren goed hebt gekoppeld, moet het gewoon werken. Als dat niet het geval is, moet er wel wat anders aan de hand zijn, en dan is een voorbeeldje een stuk makkelijker zoeken.

Michel
 
Hallo Michel

Hierbij de db in rar bestand.

Ik heb dus klantenbestand.

In het hoofdformulier kun je klantgegevens invullen.

Nu moet je in het subformulier een collega uitzoeken die mee is gegaan. De adresgegevens etc. komen dus uit het klantenbestand.

Ik heb een en ander gekoppeld zoals je zei. Nu is het probleem dat de collega alleen verschijnt als de code in het hoofdform dus hetzelfde is.

Dat is dus ongewenst want bij klant piet, kan ook henk meegaan zijn. Nu is het altijd zo dat als je klant piet is dan is de collega ook piet.

Ik hoop dat je weet wat ik wil bereiken. Namelijk bij klantgegevens een collega selecteren die is meegegaan. Deze gegevens van de collega komen uit tabel van klantgegevens.
 

Bijlagen

  • db1.rar
    89,6 KB · Weergaven: 22
Laatst bewerkt:
Iemand

Heeft iemand al tijd gehad om hier naar te kijken? Ik moet morgenvroeg nl een oplossing hebben anders krijg ik een relatieprobleem :)

Alvast bedankt.

Ik wil Michel alvast bedanken voor zijn zeer nuttige reacties. Top!
 
Had wat problemen met mijn browser; zag gisteren geen meldingen op het formum... Enniewee, ik zal er vandaag eens naar kijken!

Michel
 
Relatieproblemen

Heb even naar je relaties gekeken tussen de tabellen. voorreest mis ik de sleutelcode in je hoofdtabel. Ofwel is je unieke code "HH- "maar daar koppel je geen ander tabel aan.

Voorstel normaliseer je gegevens eerst eens.
 
Zo doet-ie het.

Het probleem zat 'm in twee zaken: in de tabel Collegaboer had je drie dezelfde records staan, met dus dezelfde Code. Omdat deze tabel moet worden gekoppeld aan Klantgegevens, gaat daar dus niks uitkomen. Ik heb dus twee records verwijderd.
Omdat er 3 identieke records inzaten, kon er ook geen sleutel worden vastgelegd. Na het verwijderen was dat uiteraard geen probleem. Omdat je in de tabellen nu twee goede sleutels hebt staan, kun je ook een juiste één op één relatie leggen tussen de tabellen.
En doordat de relatie nu goed is, kan ook het subformulier de juiste records weer vinden. Voilà !

Michel
(met lichte excuses dat ik je zo lang heb laten wachten...)
 

Bijlagen

  • db1 v2.rar
    89,4 KB · Weergaven: 19
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan